Tôi không thể có định nghĩa .Delay trên System.Threading.Task của tôi.System.Threading.Task không chứa định nghĩa
public async Task<string> WaitAsynchronouslyAsync()
{
await Task.Delay(10000);
return "Finished";
}
Tôi không thể có định nghĩa .Delay trên System.Threading.Task của tôi.System.Threading.Task không chứa định nghĩa
public async Task<string> WaitAsynchronouslyAsync()
{
await Task.Delay(10000);
return "Finished";
}
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) .
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
TaskEx cũng hoạt động;) –