【发布时间】:2017-11-06 16:36:04
【问题描述】:
我有以下代码行,以了解 async-await 并暂停直到等待的任务完成。
public async Task<string> WaitAsynchronouslyAsync()
{
var results = await WaitAsync();
Console.WriteLine($@"I am not waiting");
return results;
}
public async Task<string> WaitAsync()
{
await Task.Delay(10000).ConfigureAwait(false);
return "Async programming suspension point demo.";
}
await 运算符暂停执行,直到 WaitAsync()(延迟 10 秒)方法的工作完成。
与此同时,我期待Console.WriteLine($@"I am not waiting"); 应该将文本写入输出窗口,直到等待的任务完成,因为控制权返回给WaitAsync() 的调用者。当任务完成执行时,await 表达式计算字符串 ("Async programming suspension point demo.")。
我在这里混淆了暂停指针和调试指针吗?
【问题讨论】:
-
你需要把它转换成正确的英语,这样人们才能真正理解首先发生的事情。完美的语法并不重要(我也不完美),但一个人无法理解你试图谈论的重要事物。
-
从
await WaitAsync();中删除await,向下移动到return (await results);
标签: c# .net async-await task-parallel-library c#-5.0