2013-07-18 3 views

ответ

23

Вы используете .NET 4. Тогда не было Task.Delay. Тем не менее, существовала библиотека от Microsoft под названием Microsoft.Bcl.Async, и она предоставляет альтернативу: TaskEx.Delay.

Он будет использоваться как это:

public async Task<string> WaitAsynchronouslyAsync() 
{   
    await TaskEx.Delay(10000); 
    return "Finished"; 
} 

Ваши другие варианты либо обновления для .NET 4.5, или просто реализовать его самостоятельно:

public static Task Delay(double milliseconds) 
{ 
    var tcs = new TaskCompletionSource<bool>(); 
    System.Timers.Timer timer = new System.Timers.Timer(); 
    timer.Elapsed += (o, e) => tcs.TrySetResult(true); 
    timer.Interval = milliseconds; 
    timer.AutoReset = false; 
    timer.Start(); 
    return tcs.Task; 
} 

(взято из ответа Servy в here) ,

0

Если я правильно интерпретирую вопрос, это звучит так, как будто вы просто используете .NET 4.0; Task.Delay был добавлен в .NET 4.5. Вы можете добавить свою собственную реализацию, используя что-то вроде обратного вызова системного таймера и TaskCompletionSource, или: просто обновите до .NET 4.5

+1

TaskEx также работает;) –

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