我是否需要對傳遞給ThreadPool.QueueUserWorkItem的委託調用EndInvoke?ThreadPool.QueueUserWorkItem和EndInvoke
我正在使用this建議來調用ThreadPoolQueueWorkItem。
ThreadPool.QueueUserWorkItem(
delegate { someDelegate(arg1, arg2); }
);
如果我需要調用endinvoke,該如何調用它?謝謝。
我是否需要對傳遞給ThreadPool.QueueUserWorkItem的委託調用EndInvoke?ThreadPool.QueueUserWorkItem和EndInvoke
我正在使用this建議來調用ThreadPoolQueueWorkItem。
ThreadPool.QueueUserWorkItem(
delegate { someDelegate(arg1, arg2); }
);
如果我需要調用endinvoke,該如何調用它?謝謝。
不,你不需要調用它。事實上,你不應該:-)
你應該只調用EndInvoke來結束以前通過調用BeginInvoke啓動的異步調用。
在您提供的代碼中,您正在從ThreadPool線程同步運行委託。
當你有一個「消防和忘記」的要求時,這種方法就好了。但是,如果您需要從調用中檢索輸出,則最好使用BeginInvoke和EndInvoke。
你不需要,不,但根據MSDN你應該避免潛在的內存泄漏。這裏有一個great blog post by Phil Haack討論這個問題,以及他的助手類的火災和忘記用例。
你得到了問題的第一部分。我需要調用它。但是如何? – kevindaub 2011-04-02 14:25:43
對不起,由於您沒有調用BeginInvoke,因此在您的示例中您不需要這樣做。 – BrandonZeider 2011-04-02 14:49:58
太好了。這就是我需要知道的。我正在做火和忘記的方法。 – kevindaub 2011-04-02 15:08:43