我有以下代码:
Action<CancellationToken> act1 = tk1 => {
//sleep for 5 seconds
Console.WriteLine(...);
};
Task t1 = new Task(() => execute(act1));
t1.Start();
Run Code Online (Sandbox Code Playgroud)
怎样睡觉里面行动?我尝试过:
Thread.Sleep(TimeSpan.FromSeconds(5));
Run Code Online (Sandbox Code Playgroud)
和
Task.Delay(TimeSpan.FromSeconds(5));
Run Code Online (Sandbox Code Playgroud)
和
Task.Delay(TimeSpan.FromSeconds(5));
Run Code Online (Sandbox Code Playgroud)
Task默认情况下会创建一个异步运行的新文件。因此,您的方法将继续独立于Task. 您有多种选项可以同步到您的Task.
如果您处于某种async方法中,您可以等待Task
await Task.Delay(TimeSpan.FromSeconds(5));
Run Code Online (Sandbox Code Playgroud)
否则,您可以随时使用Task.Wait
Task.Delay(TimeSpan.FromSeconds(5)).Wait();
Run Code Online (Sandbox Code Playgroud)
这将阻塞该方法,直到该方法Task完成运行。
在你的情况下,你可以让你的 Lambdaasync
Action<CancellationToken> act1 = async tk1 => {
await Task.Delay(TimeSpan.FromSeconds(5), tk1);
Console.WriteLine(...);
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3312 次 |
| 最近记录: |