可能的重复:
每个 BeginInvoke 必须跟 EndInvoke 吗?
EndInvoke() 是可选的,是可选的,还是绝对不是可选的?
我有一个多线程应用程序,其中一个辅助线程需要每隔几分钟在主线程上执行一次代码。没有任何返回值,并且第二个线程不关心它是否引发任何异常或无法运行。
到目前为止,我一直让它通过 运行代码Form.Invoke
,但有时它需要比平时更长的时间(几秒钟)并阻塞线程直到它完成。我需要第二个线程能够继续执行而不会停顿几秒钟。
BeginInvoke
听起来它可以很好地完成工作,但我真的没有任何地方可以调用EndInvoke
,因为我不想等待它或获得返回值。并且考虑到被调用的代码涉及一堆本机调用,我不确定它是否是一个好主意EndInvoke
。
我是否需要调用EndInvoke
,或者是否有其他方法可以让代码在主窗体线程上异步运行,我应该使用它来代替?
谢谢 =)