최근 비동기 프로그래밍을위한 async/await 키워드 인 새로운 C# 기능에 대해 배우려고합니다.비동기 프로그래밍 C#
static void Main(string[] args)
{
Console.WriteLine("Task based APM demo");
// Call Exponnent() asynchronously.
// And immediately return the control flow.
// If I don't put a Task here, the program will sometimes
// terminate immediately.
Task t = new Task(async() =>
{
int result = await Program.Exponent(10);
// After the operation is completed, the control flow will go here.
Console.WriteLine(result);
});
t.Start();
Console.ReadKey();
}
static async Task<int> Exponent(int n)
{
Console.WriteLine("Task started");
return await TaskEx.Run<int>(() => 2 << (n - 1));
}
}
내가 그것에 대해이 문이 행동하는 방식에 대한 질문이 : 내가 웹에서 검색 할 때, 나는이 예제를 직면했다. 처음에는 그 시점에서 프로세스를 해제하고 호출자 컨텍스트로 돌아 가기를 원할 때 기다리는 표현식을 이해합니다. 그러나이 표현식이 Exponent 메소드가 호출 한 라인에서 이것을 사용하는 이유는 무엇입니까? 실제로 컴파일러가이 프로그램 라인에 직면했을 때 어떤 일이 발생 했습니까? 편지 질문은, 왜 프로그램이 지수 메서드 본문에서 결과를 반환하기 위해 "TaskEx.Run"을 사용합니까? "return await (() => 2 < < (n - 1))을 사용할 수 있습니까?" 만? 이 줄로 컴파일러가 어떻게 동작합니까? 사전
이 질문에 좀 더 구체적인 제목이 있어야한다고 생각하지만, 어떻게해야하는지 잘 모르겠습니다. 누구나 아이디어가 있습니까? – svick
@Azad : 'async'에 대한 소개 (예 : [내 블로그의 블로그] (http://nitoprograms.blogspot.com/2012/02/async-and-await.html))와 그 다음 [async/await FAQ] (http://blogs.msdn.com/b/pfxteam/archive/2012/04/12/10293335.aspx)를 따르십시오. –