通过使用C4
或C2
,我们可以将同步操作转换为任务,以便我们可以使用C3
,如下所示:
Task.Run
与此同时,许多方法本身都有异步实现,因此建议直接使用
Task.Factory.StartNew
但两者之间的区别是什么?
答案 0 :(得分:2)
SomeMethodAsync
可能是执行IO工作的方法IO work does not require a thread to work。所以SomeMethodAsync
不会导致线程池中的线程只是坐下来等待它完成。线程池线程是服务器应用程序(如ASP.NET应用程序)中的重要资源。在这样的应用程序中,每个请求都由一个线程池线程提供服务,因此可以通过保存这些线程来增加活动请求的数量。
await Task.Run(() => { SomeMethod(); }
使用线程池线程来执行SomeMethod
方法。如果SomeMethod
IO工作,那么你只是不必要地使用了一个线程池线程。