Je ne peux pas avoir la définition .Delay sur mon System.Threading.Task.System.Threading.Task ne contient pas la définition
public async Task<string> WaitAsynchronouslyAsync()
{
await Task.Delay(10000);
return "Finished";
}
Je ne peux pas avoir la définition .Delay sur mon System.Threading.Task.System.Threading.Task ne contient pas la définition
public async Task<string> WaitAsynchronouslyAsync()
{
await Task.Delay(10000);
return "Finished";
}
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) .
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
TaskEx fonctionne aussi;) –