如何在等待Task时获得它的句柄
本文关键字:句柄 在等待 Task | 更新日期: 2023-09-27 17:59:17
// This does not work
Task t = await Task.Run(async () => { await requestThread.Execute(); }, cts.Token);
// This does work
Task t = Task.Run(async () => { await requestThread.Execute(); }, cts.Token);
当我尝试以上操作(等待(时,我得到错误"无法将类型"void"隐式转换为"System.Threading.Tasks.Task">
获取task.Run返回的任务的句柄的正确方法是什么?
Execute方法定义如下:
public async Task Execute()
您不必在创建对象的同一行等待对象,进行完全可以
Task t = Task.Run(async () => { await requestThread.Execute(); }, cts.Token);
await t;
现在您有了对t
的引用,它一直在等待完成。
顺便说一句,我觉得很奇怪,你把异步任务包装在Task.Run
中,异步方法在内部等待之前,在开始时有一个很大的同步部分吗?如果没有,你可能只需要做
Task t = requestThread.Execute();
await t;