我知道关于这个主题有几个线程,但我认为我的不同。在我的应用程序中,我打开了一个表单,用户可以在其中输入一些参数以进行即将到来的打印。此打印应该在后台工作人员中运行。所以我用事件“OnFormClosing”解雇了那个后台工作人员。
在那个后台工作人员中,我需要访问 GUI 并更改/读取它,所以我需要一个 control.Invoke()。“有时” Invoke 一直停留在调用调用本身并且不执行委托。我的主线程工作正常,没有被阻塞。我仍然可以与 GUI 交互做其他事情。在发布任何代码之前:除了执行 control.Invoke() 是否还有其他条件
- 主 GUI 线程未被阻塞
- contorl 必须存在,句柄已创建且不被释放
主线程不需要是空闲的,并且调用调用正确吗?一旦主线程空闲,它应该继续......
谢谢你的帮助
更新:
这是该问题期间的线程情况: 主线程正在执行此操作:
Application.Run(appContext);
所以它是空闲的。工作线程正在此行等待:
fileName = (string)cbPrintFile.Invoke(new Func<String>(() => cbPrintFile.Text));
这不像我上面所说的那样执行。cbPrintFile
是一个组合框