Raj*_*Raj 1 .net c# task .net-4.7
我有一个程序可以处理这样的事情
var t=Task.Run(()=>process());
while(!t.IsCompleted())
Task.Delay(1000);
Console.WriteLine(t.Result);
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以让程序等待任务完成?
您在这里所做的本质上是“异步同步”。这里错误的解决方法是......t.Wait()而不是你的循环。但是,实际上,您应该尝试制作此代码async,并改为使用:
Console.WriteLine(await t);
Run Code Online (Sandbox Code Playgroud)
请注意,如果需要,您Main可以使用 C#中的方法async static Task Main()。
然而!这里还真是不多点用Task.Run在这里-这只是占用了池中的线程,并阻止当前线程等待就可以了。你没有得到任何东西Task.Run!
process()是同步的:只需使用Console.WriteLine(process())process()是异步的(返回一个Task<T>/ ValueTask<T>/etc):只需使用Console.WriteLine(await process()) | 归档时间: |
|
| 查看次数: |
2103 次 |
| 最近记录: |