Rat*_*eek 1 c# async-await c#-5.0
我有以下NUnit测试类:
[TestFixture]
public class Tests
{
async Task<string> GetMessageAsync()
{
return "Hello from GetMessageAsync!";
}
Task<string> GetMessageTask()
{
return new Task<string>(() => "Hello from GetMessageTask!");
}
[Test]
public async void AwaitAsyncMethod()
{
Assert.AreEqual("Hello from GetMessageAsync!", await GetMessageAsync());
}
[Test]
public async void AwaitTaskMethod()
{
Assert.AreEqual("Hello from GetMessageTask!", await GetMessageTask());
}
}
Run Code Online (Sandbox Code Playgroud)
第一个测试AwaitAsyncMethod()在执行后立即成功完成.第二个测试AwaitTaskMethod()永远不会完成.但它确实编译.
为什么第二次测试永远不会完成?为什么我可以针对非异步方法编译await,如果看起来它实际上不起作用?让我们说出于某种原因,我想要一个非异步方法来返回一个可以等待的任务 - 如何更改此代码来实现这一目标?
new Task(...)返回一个未开始的Task.
在你打电话之前Start(),那个任务永远不会完成,等待它的任何东西永远不会运行.
相反,您可以调用Task.Run(),这将为您创建并启动任务.
| 归档时间: |
|
| 查看次数: |
911 次 |
| 最近记录: |