2016-01-27 2 views
4

Что такое TaskEx? В http://www.i-programmer.info/programming/c/1514-async-await-and-the-ui-problem.html?start=1 или await TaskEx.Delay или Await async clarification. Я используюОжидание async TaskEx

Task DoWork() 
{ 
    return Task.Run(() => 
    { 
     for (int i = 0; i < 30; i++) 
     { 
      Thread.Sleep(1000 * 60 * 30); 
     } 
    }); 
} 

Примеры использования этого

Task DoWork() 
{ 
    return TaskEx.Run(() => 
    { 
    for (int i = 0; i < 10; i++) 
    { 
     Thread.Sleep(500); 
    } 
    } 
}); 

Я называю это как await DoWork(); Если вы используете только Task, await возвращает ничего, и нет никакого ответа. Если я использую TaskEx, он говорит, что он не существует в контексте. Должен ли TaskEx быть классом или чем-то с какой-то функцией? Кулаки один Работает, это моя ошибка.

ответ

15

TaskEx был просто дополнительный класс, который изначально поставляется с СТР из асинхронной/Await расширения для C# 5, прежде чем .NET 4.5 поставляется ... и теперь частью Async Targeting Pack (ака Microsoft.Bcl.Async NuGet package) в случае, если вы хотите используйте async/await, но настройте таргетинг на .NET 4.0 (у которого нет кода, необходимого для него).

Если вы используете .NET 4.5 или новее, просто используйте Task.Run, что делает то же самое. (Вы не будете использовать пакет таргетинга, поэтому у вас не будет TaskEx.) Асинхронный таргетинг не может добавить статический метод к существующему классу Task, следовательно, существует необходимость в TaskEx.

+0

Но я жду DoWork(); ничего не возвращай. –

+0

@ Владымир Лактионов: Я не знаю, что вы имеете в виду. –

+0

Не должно быть паузы, когда я вызываю ожидание DoWork(); , То она идет Task DoWork() { возвращение Task.Run (() => { для (INT I = 0; я <30; я ++) { Thread.Sleep (1000 * 60 * 30); } }); } || для паузы, если пауза будет выполнять Task DoWork() или Когда она вернется к Await DoWork; ? –

0

«TaskEx это класс, который существует только в CTP, так как не было никакого способа, чтобы добавить дополнительные методы к существующему классу задач в структуре (как CTP осуществляется с помощью отдельного узла).

Это не будет существовать в окончательной RTM-версии фреймворка. Методы, определенные в TaskEx, будут перенесены в Task. "

Источник: https://social.msdn.microsoft.com/Forums/en-US/74c5ba79-76cc-4f73-a3fa-35616525ab80/what-is-the-difference-between-task-and-taskex-?forum=async

CTP был версией сообщества предварительного просмотра платформы .NET компилятора.

+0

Он не только существует в CTP. Он также существует в пакете асинхронного таргетинга. –

+0

Я только по тому, что было заявлено и принята на MSDN. Я не слышал об асинхронном таргетинге, является ли он частью библиотеки .NET? – kai

+0

Следуйте за ссылками в моем ответе :) –

Смежные вопросы