我在C#中的多线程应用程序的工作/。NET
我想每个线程创建其自己的形式,因此它可以访问它并显示其其表格中的信息没有任何问题
有没有办法做到那?
我试过Application.Run(新的MyForm()),但问题是这个函数阻止执行,我的线程无法完成它的工作。多个GUI一个foreach线程在.net中?
回答
您可以使用您的窗体的Show
方法表现出来,即使你想显示在Dialog
形式你可以使用ShowDialog
方法的形式,对话将在其他形式的顶部。
大概每个线程都会有一些信息,它会在它自己的窗口中实时显示。所以模态形式不会起作用;他们会阻止。 – 2012-07-29 22:39:43
@RobertHarvey - 你确定吗?携带发布到其他表单的数据的消息会发生什么情况?好的,他们没有专注,但是他们应该仍然能够处理不需要专注的张贴消息? – 2012-07-29 23:24:58
您需要使用Show方法从其线程中打开窗体,并且不能在不同线程的窗体之间链接,如来自不同线程的MDI父窗口和子窗体。 顺便说一下,你可以在主要的GUI线程中打开所有的窗体,并且使用invoke从其他线程显示数据而没有任何问题,我认为这种方法更好。看这里:http://msdn.microsoft.com/en-us/library/ms951089.aspx
这是设计。线程一次只能做一件事,所以如果你的代码运行在该线程上的UI将被阻塞,并且如果你想运行一个UI,你将不得不使用一些消息传递构造(例如计时器)来获取你的工作完成了。
正确的方法确实是拥有一个UI线程,并让其他线程异步发布进度消息以便在UI上显示(例如,在窗体上使用BeginInvoke
,这可以安全地从其他线程调用)。
您也可以使用一个'BackgroundWorker',它具有一种安全的方式将状态信息封送回表单。 – 2012-07-29 22:42:03
对。我在.NET 1.1中完成了这种工作,但当时没有BackgroundWorker,我总是忘记它。在此期间,我主要进行服务器开发,这使我免于使用线程绑定的窗口消息。 – Lucero 2012-07-29 22:43:39
- 1. 线程一个GUI
- 2. 在.Net中克隆一个线程
- 3. 在.net中排队一个线程
- 4. 同步.NET中的多个线程4
- 5. 从一个foreach .NET 2.0
- 6. 创建一个GUI更新线程
- 7. PyQt - 从另一个线程修改GUI
- 8. foreach在一个foreach中php
- 9. 从另一个线程foreach listview项目
- 10. 多维数组 - foreach在一个foreach内
- 11. 如何在一个程序中创建多个GUI表单?
- 12. 线程在GUI中
- 13. 多少个线程在一个循环
- 14. 使用forEach()在多个线程或forEach()和lambdas中进行集合迭代
- 15. 简单的GUI应用程序中有多少个线程?
- 16. 多线程访问.net中的一个集合
- 17. log4j在多线程环境中。每个线程一个Appender或每个线程一个Logger或...?
- 18. 从一个线程启动一个函数。 (GUI线程和QThread错误)
- 19. .net多线程
- 20. .net多线程?
- 21. 在GUI中显示另一个线程的状态
- 22. 如何在另一个线程中访问GUI元素?
- 23. gtk/c在一个线程中操纵GUI:奇怪的错误
- 24. 从另一个线程更新GUI线程
- 25. 在单个线程上处理来自多个线程的请求 - .NET Core
- 26. 线程多次加入()一个线程
- 27. 支持从另一个线程创建GUI的GUI库
- 28. 在C#中如何根据另一个线程中的类来显示来自另一个GUI的GUI?
- 29. 多个foreach vs多个if内部foreach
- 30. 一个画布,多线程
做form.Show()代替。他们不在单独的线程中,但他们也不阻止。在不同的线程中产生太多的表单似乎并不是一个好主意。 – nawfal 2012-07-29 22:31:46
为什么它不是一个好主意?我认为这比从所有主题更新一个gui更好 – 2012-07-29 22:35:29