2
A
回答
6
我不知道你是否知道你提出的解决方案的奇特性。如果这个答案完全错过了商标,我很抱歉。
我假设你想在你的应用程序中使用响应。你不希望其他表单在一个表单正在工作时“挂起”。
但是,每个窗体有不同的GUI线程是而不是人们通常如何实现这一点。我不知道这是否可能。
您将仍然只有一个线程处理所有图形(又名“GUI线程”),但所有耗时的工作应立即卸载到另一个线程(又称工作线程)。这样的应用程序仍然响应。
我建议你看看这个视频。适用与否,在4-6分钟内,你应该知道这是你正在寻找的答案。
DNRTV episode with Stephen Toub
另一种可能性是,你是询问如何没有它modal显示形式。
+0
这是可能的,我之前做过,我只是在寻找我几年前使用的代码示例,还有一些非常巧妙的技巧。 – Behrooz
3
编号
任何GUI活动都必须在主线程上发生。
处理可以在一个单独的线程中完成,在这种情况下,请尝试在子窗体中使用BackgroundWorker
。
1
这MSDN forum post说,窗体可以在单独的线程中运行。不过,我不知道它是否适用于儿童MDI表格。但技术很简单:
Thread thread = new Thread(() =>
{
var yourForm = new YourForm();
Application.Run(yourForm);
});
thread.ApartmentState = ApartmentState.STA;
thread.Start();
相关问题
- 1. 在单独的线程中运行窗体表单
- 2. 如何在MDI容器中显示子窗体而不显示子窗体中容器窗体中的控件?
- 3. Mdi子窗体单实例
- 4. 儿童窗体大小设置为MDI窗体的MDI容器的大小
- 5. Windows窗体中的MDI子窗体
- 6. 在单独线程中的MFC窗体
- 7. 如何使用MDI父窗体制作mdi子窗体?
- 8. 当MDI Child最大化时删除MDI容器窗体的默认MDI菜单
- 9. WinForms MDI子窗体
- 10. MDI子窗体C#
- 11. 父窗体关闭时如何关闭在自己的线程中运行的子窗体? (非MDI)
- 12. 如何在其windowstate =最大化的mdi容器窗体中显示子窗体?
- 13. 从另一个子窗体打开子窗体并将MDI设置为父窗体 - 如何操作?
- 14. 需要打开MDI子窗体从非MDI子窗体
- 15. Mdi容器窗体不能打开
- 16. 在另一个MDI父窗体中的MDI父窗体
- 17. 作为mdi窗体中的窗口打开一个.exe文件?
- 18. 在VB.NET MDI表单中一次打开单个子窗体
- 19. 将每个PHP脚本作为单个进程或线程运行?
- 20. 如何从另一个MDI子窗体关闭特定的MDI子窗体子窗体
- 21. C#窗体窗体线程:我的窗体似乎不作为自己的线程运行
- 22. 如何从子窗体中检查另一个窗体是否正在其MDI父窗体中运行?
- 23. 如何防止单个MDI子窗体从其他mdi子窗体中偷取焦点
- 24. 在一个单独的线程中运行JavaFX控制器
- 25. 在单独的线程中运行VCL
- 26. C中mdi父项中的子窗体#
- 27. MDI子窗体不显示
- 28. MDI子窗体加载
- 29. C#将MDI父窗体的值传递给子窗体
- 30. 如何从MDI子窗体(MDI应用程序)打开窗体对话框
这没有意义 - '从单独的线程运行窗体',也许你想要在单独的线程中运行一个方法? – sll
不要尝试这个。维护用户和用户界面线程之间的一对一映射。 –