System.Threading.Task不包含定义

时间:2013-07-18 07:19:23

标签: c# multithreading

我的System.Threading.Task上没有.Delay定义。

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

2 个答案:

答案 0 :(得分:29)

您正在使用.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)。

答案 1 :(得分:0)

如果我正确地解释了这个问题,听起来你只是在使用.NET 4.0;在.NET 4.5中添加了Task.Delay。您可以使用类似系统计时器回调和TaskCompletionSource之类的内容添加自己的实现,或者:只需更新到.NET 4.5