System.Threading.Task没有包含定义。

11

我不能在我的System.Threading.Task上使用.Delay定义。

 public async Task<string> WaitAsynchronouslyAsync()
 {         
     await Task.Delay(10000);
     return "Finished";
 }
2个回答

38

您正在使用.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在这里的回答)


3

如果我正确理解这个问题,那么您似乎只是使用.NET 4.0;Task.Delay是在.NET 4.5中添加的。您可以使用类似于系统定时器回调和TaskCompletionSource的东西添加自己的实现,或者:只需更新到.NET 4.5。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接