没有EndInvoke的c# ThreadPool或BeginInvoke



网上对于如何实现"即发即弃"模式有非常不同的看法。

有人说,如果必须实现一个即发即弃的模式,调用BeginInvoke而不调用EndInvoke是没有问题的。

其他人说最好创建一个单独的ThreadPool对象。我关心的是线程池初始化成本。具体来说,要调用的方法只将对象添加到队列中,然后返回。

对于这个问题,是在池上创建一个线程还是简单地同步调用方法"更快"?我想知道一个比在池上创建线程更昂贵的工作的粗略阈值。

是否有关于这个的文档,关于池上的异常捕获和其他限制呢?

当使用ThreadPool时,您不会"在池上创建线程",而是使用预先存在的线程或等待可用的线程。

只有当许多作业正在等待时,池才会添加另一个线程,但是那个线程将被很好地利用。

使用任务(Fx4或更高)更好。

最新更新