一个winform窗口、子窗口关于线程的问题
如题。。首先我现在又疑问1.一个winform程序是不是只有一个主线程。。。在主窗口中?
2.主线程是不是是UI线程。。。
3.UI线程是不是每个子窗口也有?
我现在写多了多线程的东西突然发现我自己也蒙住了。。
原因是我在主窗口一个按钮实现了在子窗口中进行进度条的显示操作。。我
MessageBox.Show(Thread.CurrentThread.ManagedThreadId.ToString());发现在主窗口和子窗口中显示的都是一个ID,说明子窗口也是由一个共同的UI线程更改的。。换句话就是说一个WINFORM只有一个UI线程。。这个貌似跟我们说的一个窗口一个UI线程冲突了。。网上都是这么说的。。感觉很矛盾。。。请求指点。。。。 --------------------编程问答-------------------- 自己给自己顶一个啊。。呵呵。。 --------------------编程问答-------------------- 凡是Form.Show各ShowDialog出来的统统共用UI线程
“一个窗口一个UI线程”是谁说的? --------------------编程问答--------------------
这个是我从网上看到的。。。那主窗口的主线程也就是UI线程了?? --------------------编程问答-------------------- 操作UI的理论上必须是主线程,但是你可以强制编译,但是如果出现主线程或者多个线程同时才操作UI的时候,就会出错崩溃,所以一般采用委托主线程的方式来操作UI --------------------编程问答--------------------
恩。。好的。。谢谢。。 --------------------编程问答-------------------- 最后问下子。。一个进程是不是只有一个UI线程。。一个应用程序是否可以有多个UI线程。。该如何做。。 --------------------编程问答--------------------
只能有一个UI线程,也就是主线程,这样是为了UI控件操作的安全性,你应该先了解下什么叫线程,如果子线程要操作UI,最好的办法是使用委托主线程的方式来进行,你可以在google搜索下“C#多线程操作界面”,看看就明白了 --------------------编程问答--------------------
OK。。。以前都是单窗口的。。。这些问题没有想太多。。谢谢了。。。 --------------------编程问答-------------------- --------------------编程问答-------------------- 不知道是不是这样:
正常的.Net调用的窗口时同一个线程
使用反射调用的窗口使用同一个线程
使用new Thread thread.Start调用的窗口使用其他的线程
使用DllImport调用的窗口使用其他的线程
使用Process.Run的窗口使用其他的线程
--------------------编程问答-------------------- Application.Run(Form) 在当前线程上启动应用程序消息循环,并可以选择使某窗体可见。
补充:.NET技术 , C#