ThreadPool.QueueUserWorkItem和EndInvoke

时间:2011-04-02 14:07:55

标签: .net threadpool

我是否需要在传递给ThreadPool.QueueUserWorkItem的委托上调用EndInvoke?

我正在使用this建议来调用ThreadPoolQueueWorkItem。

ThreadPool.QueueUserWorkItem(
    delegate { someDelegate(arg1, arg2); }
);

如果我需要调用endinvoke,我该如何调用它?感谢。

2 个答案:

答案 0 :(得分:4)

不,你不需要打电话。事实上,你不应该: - )

您应该只调用EndInvoke来结束先前通过调用BeginInvoke启动的异步调用。

在您提供的代码中,您正在从ThreadPool线程同步运行委托。

当您遇到“火灾和遗忘”的要求时,这种方法就可以了。但是,如果需要从调用中检索输出,最好使用BeginInvoke,然后使用EndInvoke。

答案 1 :(得分:0)

您不需要,不,但根据MSDN,您应该避免潜在的内存泄漏。这是一个great blog post by Phil Haack讨论这个问题,以及他的帮助类,用于防火和忘记用例。