【发布时间】:2012-10-15 07:42:52
【问题描述】:
我想知道如何在不使用额外线程或await 和async 关键字但仅使用任务的情况下完成以下程序所做的相同事情。一个示例代码会很棒。在我看来,我们需要使用 TaskCompletionSource 和 Async 版本的 IO 绑定操作或任何长时间运行的操作。
static void Main(string[] args)
{
Task t = Go();
Console.WriteLine("Hello World");
Task.Delay(1000).GetAwaiter().OnCompleted(() => { Console.WriteLine("Completed"); });
Console.ReadLine();
}
static async Task Go()
{
var task = PrintAnswerToLife();
await task;
Console.WriteLine("Done");
}
static async Task PrintAnswerToLife()
{
var task = GetAnswerToLife();
int answer = await task;
Console.WriteLine(answer);
}
static async Task<int> GetAnswerToLife()
{
var task = Task.Delay(2000);
await task;
int answer = 21 * 2;
return answer;
}
【问题讨论】:
-
@zahir 似乎是一个不错的链接。非常感谢。
标签: c# .net asynchronous async-await