我的 System.Threading.Task 上不能有 .Delay 定义。
public async Task<string> WaitAsynchronouslyAsync()
{
await Task.Delay(10000);
return "Finished";
}
我的 System.Threading.Task 上不能有 .Delay 定义。
public async Task<string> WaitAsynchronouslyAsync()
{
await Task.Delay(10000);
return "Finished";
}
您正在使用 .NET 4。当时,没有Task.Delay
. 但是,Microsoft 有一个名为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)。
如果我正确解释了这个问题,听起来您只是在使用 .NET 4.0;Task.Delay
在 .NET 4.5 中添加。您可以使用诸如系统计时器回调和 a 之类的东西添加自己的实现TaskCompletionSource
,或者:只需更新到 .NET 4.5