[英]Error with async await keywords
我添加了AsyncCtpLibrary v.3。 從異步網頁中獲取了一些示例代碼。 將它包裹在TestFixture中以便進行游戲。
我得到錯誤:任何想法為什么?
錯誤1 - 類,結構或接口成員聲明中的標記'void'無效
錯誤2 - ; 預期
碼:
[TestFixture]
public class AsyncTests
{
[Test]
public async void AsyncRunCpu()
{
Console.WriteLine("On the UI thread.");
int result = await TaskEx.Run(
() =>
{
Console.WriteLine("Starting CPU-intensive work on background thread...");
int work = DoCpuIntensiveWork();
Console.WriteLine("Done with CPU-intensive work!");
return work;
});
Console.WriteLine("Back on the UI thread. Result is {0}.", result);
}
public int DoCpuIntensiveWork()
{
// Simulate some CPU-bound work on the background thread:
Thread.Sleep(5000);
return 123;
}
}
您不能簡單地將.dll添加到項目中並使其工作:Async CTP擴展了C#語言的語法,即使存在所需的運行時程序集,“普通”編譯器也無法理解新的關鍵字。 您需要使用官方安裝程序安裝它。 (注意:首先卸載自上一個Service Pack以來的所有Visual Studio更新,否則安裝將不會成功。您可以在以后重新安裝更新。)
我認為它應該是:
[Test]
public async Task AsyncRunCpu()
{
// ...
}
據我所知,具有void
返回類型的異步方法在某種程度上是特殊的 - 想知道為什么編譯器不會對這種情況發出警告......
順便說一句,您可以使用async/await
與.NET4.0,只需在項目中添加對Microsoft.BCL.Async的引用。 唯一的區別是某些與Task
相關的功能存在於TaskEx
類型中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.