【发布时间】:2011-06-30 04:56:11
【问题描述】:
可能的重复:
Must every BeginInvoke be followed by an EndInvoke?
Is EndInvoke() optional, sort-of optional, or definitely not optional?
我有一个多线程应用程序,其中一个辅助线程需要每隔几分钟在主线程上执行一次代码。没有任何返回值,第二个线程不关心它是否引发任何异常或运行失败。
到目前为止,我一直让它通过Form.Invoke 运行代码,但有时它需要比平时更长的时间(几秒钟)并阻塞线程直到它完成。我需要第二个线程能够继续执行而不会停顿几秒钟。
BeginInvoke 听起来可以很好地完成这项工作,但我真的没有地方可以打电话给EndInvoke,因为我不想等待它或获得返回值。并且考虑到被调用的代码涉及大量本机调用,我不确定不EndInvoke 是否是个好主意。
我是否需要调用EndInvoke,或者是否有其他方法可以让代码在主窗体线程上异步运行,而我应该使用它来代替?
谢谢 =)
【问题讨论】:
标签: c# multithreading delegates begininvoke