我是否需要在传递给ThreadPool.QueueUserWorkItem的委托上调用EndInvoke?
我正在使用this建议来调用ThreadPoolQueueWorkItem。
ThreadPool.QueueUserWorkItem(
delegate { someDelegate(arg1, arg2); }
);
如果我需要调用endinvoke,我该如何调用它?感谢。
答案 0 :(得分:4)
不,你不需要打电话。事实上,你不应该: - )
您应该只调用EndInvoke来结束先前通过调用BeginInvoke启动的异步调用。
在您提供的代码中,您正在从ThreadPool线程同步运行委托。
当您遇到“火灾和遗忘”的要求时,这种方法就可以了。但是,如果需要从调用中检索输出,最好使用BeginInvoke,然后使用EndInvoke。
答案 1 :(得分:0)
您不需要,不,但根据MSDN,您应该避免潜在的内存泄漏。这是一个great blog post by Phil Haack讨论这个问题,以及他的帮助类,用于防火和忘记用例。