Ошибка с асинхронным ожиданием ключевых слов - PullRequest
1 голос
/ 03 марта 2012

Я добавил 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;
    }
}

Ответы [ 2 ]

4 голосов
/ 03 марта 2012

Вы не можете просто добавить .dll в свой проект и заставить его работать: Async CTP расширяет синтаксис языка C #, «нормальный» компилятор не понимает новые ключевые слова, даже если требуется сборка во время выполнениянастоящее.Вам необходимо установить его с помощью официального установщика.(Примечание. Удалите все обновления Visual Studio с момента последнего последнего пакета обновления, иначе установка не удастся выполнить. После этого вы можете переустановить обновления.)

0 голосов
/ 17 января 2014

Я думаю, это должно быть:

[Test]
public async Task AsyncRunCpu()
{
    // ...
}

Насколько я могу судить, асинхронные методы с типом возврата void в некотором роде особенные - удивляюсь, почему компилятор не выдает предупреждение для такого сценария ...

Кстати, вы можете использовать async/await с .NET4.0, просто добавьте ссылку на Microsoft.BCL.Async в проекте. Единственное отличие состоит в том, что некоторые функции, связанные с Task, относятся к типу TaskEx.

...