1
我有以下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());
}
}
的第一次測試,AwaitAsyncMethod(),在執行時成功完成立即。第二個測試AwaitTaskMethod()從來沒有完成。但它確實編譯。
爲什麼第二次測試從不完成?爲什麼我可以編譯等待非異步方法,如果看起來它實際上不工作?讓我們說出於某種原因,我想要一個非異步方法來返回一個可以等待的任務 - 我如何改變這個代碼來完成這個任務?
啊哈。 Task.Run就是我所缺少的。謝謝。 – RationalGeek