簡體   English   中英

異步等待關鍵字出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM