【发布时间】:2017-11-07 11:08:19
【问题描述】:
尝试在下面的示例中理解 async/await:
public static Task <string> job()
{
Console.WriteLine("start delay 1");
Task.Delay(2000);
Console.WriteLine("sleep done 1");
Task<string> t = new Task<string>(()=> {
Console.WriteLine("start delay 2");
Task.Delay(3000);
Console.WriteLine("sleep done 2");
return "aaaa"; }) ;
t.Start();
return t;
}
public async static void caller()
{
string s = await job();
Console.WriteLine("result is {0}", s);
}
public static void Main()
{
caller();
Console.WriteLine("done with caller");
Console.ReadLine();
}
为了获得更清晰的画面,我想让任务运行的时间更长一些,并且我添加了 Task.Delay()。两次延迟都不需要时间并立即完成。为什么?如何让我的任务花一些时间在简单的工作上以使其持续更长时间?
【问题讨论】:
-
你必须
awaitTask.Delay(ms)(注意你必须让 job()async正如@stuartd 所说的那样才能工作) -
job()也应该标记为async -
看看documentation 和那里的代码示例
标签: c#