2013-07-18 35 views

答えて

23

.NET 4を使用しています。当時はTask.Delayはありませんでした。ただし、マイクロソフト によってライブラリがあり、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にただ更新することもできます。

+1

TaskExも機能します。 –

関連する問題