2013-07-18 9 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 4.5

+1

टास्कएक्स भी काम करता है;) –

संबंधित मुद्दे