如何不等待单行代码执行结果,直接继续后续代码运行?
如何异步执行无需等待结果的长时间运行方法?
你可以把这个耗时的方法放到后台线程执行,让主线程直接跳过等待,继续执行下一行代码。用Task.Run就能实现这个需求:
修改前的同步代码(会阻塞90秒)
CPH.RunActionById(/* 填入你的GUID */, true); // 这里要等上面的方法返回才会执行
修改后的异步代码(立即执行下一行)
// 将耗时操作丢到后台线程,不等待完成 _ = Task.Run(() => CPH.RunActionById(/* 填入你的GUID */, true)); // 这一行会立刻执行,完全不用等上面的方法结束
补充说明
Task.Run会把委托交给线程池中的线程去处理,主线程不会被阻塞。用_接收返回的Task,是明确告知编译器我们不需要处理这个任务的后续(比如异常、完成状态),刚好匹配你不需要结果的场景。- 如果这个方法涉及共享资源的读写,要注意线程安全,避免出现竞态问题。
- 如果你的程序在后台任务运行期间退出,这个任务可能会被强制终止,根据你的实际使用场景确认是否接受这种情况。
内容的提问来源于stack exchange,提问作者StefanBraun
相关产品推荐
相关产品推荐

