【发布时间】:2018-11-26 19:55:19
【问题描述】:
查看示例代码。
Console.WriteLine("start")
Task.Run(async () =>
{
await Task.Delay(3000);
});
Console.WriteLine("end");
// result
// start [3s delay] end
有效! 但下面的代码不起作用。
Action action = async () =>
{
await Task.Delay(3000);
};
Console.WriteLine("start")
Task.Run(action);
Console.WriteLine("end");
// result
// start [without delay] end
为什么Task.Run 不等待异步操作变量?
编辑 -------------
我很抱歉。我写错了代码。 这是正确的代码。
我在 VS 2017 的 C# Interactive 上测试它
Console.WriteLine("start");
await Task.Run(async () =>
{
await Task.Delay(3000);
});
Console.WriteLine("end");
Action action = async () =>
{
await Task.Delay(3000);
};
Console.WriteLine("start");
await Task.Run(action);
Console.WriteLine("end");
【问题讨论】:
-
不确定您在哪里测试,但第一个示例不会等待延迟:dotnetfiddle.net/TP3J37
-
@CamiloTerevinto 对不起,我写错了代码。
标签: c# lambda async-await task