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