2013-07-18 35 views

Trả lời

23

Bạn đang sử dụng .NET 4. Quay lại, không có Task.Delay. Tuy nhiên, có một thư viện của Microsoft được gọi là Microsoft.Bcl.Async và nó cung cấp một phương án thay thế: TaskEx.Delay.

Nó sẽ được sử dụng như thế này:

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

lựa chọn khác của bạn là để một trong hai cập nhật cho .NET 4.5, hoặc chỉ thực hiện nó cho mình:

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

(lấy từ Servy của câu trả lời here) .

0

Nếu tôi giải thích câu hỏi đúng, có vẻ như bạn đang sử dụng .NET 4.0; Task.Delay đã được thêm vào .NET 4.5. Bạn có thể thêm triển khai của riêng bạn bằng cách sử dụng một cái gì đó như gọi lại hệ thống hẹn giờ và TaskCompletionSource hoặc: chỉ cập nhật lên .NET 4.5

+1

TaskEx cũng hoạt động;) –

Các vấn đề liên quan