【发布时间】:2020-10-15 16:13:00
【问题描述】:
我有一个需要在另一个线程上异步执行的过程。该程序将批量处理多个数据(可以接收 2 个项目或 40000 个)。从本地测试来看,最长的运行时间约为 2 分钟(40000 个项目)。
场景如下: UI 调用后端,后端启动一个异步线程,该线程将运行该过程,然后返回一个布尔值,以了解是否收到请求(这些是要求,我不要使用等待/等待)。我不太确定在这之间使用什么:
Task.Run(()=> MyProcedure())
或
Task.Factory.StartNew(()=> MyProcedure(), TaskCreationOptions.LongRunning)
对于这种情况,最好的选择是什么?
【问题讨论】:
-
这两者没有区别。一个是另一个具有一些默认参数的别名。仅当您每秒调用其中一个时,它们的行为才会有所不同,例如,
Task.Factory.StartNew将创建大量线程,这实际上会减慢程序的速度。
标签: c# .net multithreading asynchronous threadpool