关于是否每个BeginInvoke()是否必须由EndInvoke()进行匹配,我已经读到了相互矛盾的观点。与不调用EndInvoke()有关的泄漏或其他问题吗?
Delegate.EndInvoke记录为一个 你要给这个 (即必要的-否则泄漏发生) -从MSDN:
重要的提示 无论使用哪种技术,请始终调用EndInvoke来完成异步调用。
重要的提示
无论使用哪种技术,请始终调用EndInvoke来完成异步调用。
Control.EndInvoke可以忽略即发即弃方法-来自msdn:
您可以调用EndInvoke从委托中检索返回值(如果需要),但这不是必需的。
但是- 如果您正在使用Delegate.BeginInvoke并且不想要结果,请考虑使用ThreadPool.QueueUserWorkItem-它将使生活变得更加轻松,并且避免了诸如此类的痛苦IAsyncResult。
Delegate.BeginInvoke
ThreadPool.QueueUserWorkItem
IAsyncResult