可能的重复:
Must every BeginInvoke be followed by an EndInvoke?
Is EndInvoke() optional, sort-of optional, or definitely not optional?
我有一个多线程应用程序,其中一个辅助线程需要每隔几分钟获取一些代码在主线程上执行一次。没有任何返回值,第二个线程不关心它是否引发任何异常或运行失败。
到目前为止,我已经让它通过Form.Invoke来运行代码,但有时需要比平常长得多的时间(几秒钟),并阻塞线程直到它完成。我需要第二个线程能够在不停顿几秒钟的情况下继续执行。
BeginInvoke听起来可以很好地完成工作,但是我没有地方可以调用EndInvoke,因为我不想等待它或获取返回值。考虑到被调用的代码涉及大量本机调用,我不确定不EndInvoke是否是个好主意。
我是否需要调用EndInvoke,或者是否有其他方法让代码在主窗体线程上异步运行,我应该改用它?
谢谢=)

最佳答案

如果需要,可以调用endinvoke从委托检索返回值,但这不是必需的。endinvoke将阻塞,直到可以检索返回值为止。
来源:http://msdn.microsoft.com/en-us/library/0b1bf3y3.aspx备注

07-24 18:57