我有一个以相当快的频率(每100毫秒)发射一个事件的类。为避免减慢此过程,事件处理程序应将处理交给某种后台任务/线程/工作者(而不是在事件处理程序中执行)。
最好的方法是什么?我应该在事件处理程序中使用Task.Factory.StartNew
吗?快速创建任务是否会产生开销(例如,5个事件处理程序将每100毫秒创建5个任务)?或者我可以使用BackgroundWorker
(在订阅者的构造函数中实例化),并在事件处理程序中调用.RunAsync方法吗?
答案 0 :(得分:4)
两种方式:
Task.Factory.StartNew
。此方法依赖于ThreadPool来最小化任务创建成本。在大多数情况下这应该没问题。