2013-07-18 4 views

Répondre

23

Vous utilisez .NET 4. À l'époque, il n'y avait pas Task.Delay. Cependant, il y avait une bibliothèque par Microsoft appelé Microsoft.Bcl.Async, et il fournit une alternative: TaskEx.Delay.

Il serait utilisé comme ceci:

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

Vos autres options sont soit mise à jour à 4,5 .NET, ou tout simplement mettre en œuvre vous-même:

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; 
} 

(prise de la réponse de Servy here) .

0

Si j'interprète la question correctement, il semble que vous utilisiez simplement .NET 4.0; Task.Delay a été ajouté dans .NET 4.5. Vous pouvez ajouter votre propre implémentation en utilisant quelque chose comme un rappel de temporisateur système et un TaskCompletionSource, ou: juste mettre à jour vers .NET 4.5

+1

TaskEx fonctionne aussi;) –

Questions connexes