进程中就只有一个线程,或者第一个线程,我们就叫它主线程,如同公司中的老板,通常是Main()主函数。如果有一天公司扩大了,就需要请员工了,多人同时工作,也就是多个线程一起工作,这就叫做多线程
恩!但是我问的不是这个哦!!
主线程只有一个,线程可以有多个
UI线程是不是就是主线程?
主线程是不是就是UI线程?
UI线程默认就是主线程,除非,你自己在主线程里写了别的代码,然后又用子线程来开启UI,这样UI线程就不是主线程了
是的,你程序一启动默认最先执行的就是UI主线程里面的代码,如果在执行主线程代码期间你又创建了其它线程,那么UI线程和其它的线程将会并行,当然如果你两个线程之间要调用代码那又会涉及到线程同步。
主线程只有一个,就是Main函数所在的线程,严格意义上来讲,没有UI线程这个说法,不过一般情况下,UI响应都是发生在主线程上,即使启动多个窗口也一样。
就你的问题来说,主线程只有一个,一般情况下,UI线程就是主线程,即使启动多个窗口也是都在同一个线程(主线程)上。
即使启动多个窗口也是都在同一个线程(主线程)上。
多个窗口应该是不同线程上的吧?
@luanwj: 他的意思是说,你在一个父窗体中开了很多个子窗体,那么都是在同一主线程,如果你是打开很多个窗体程序那么就会有多个线程在运行。
多个form 和 多个button一样,都是普通控件,地位一样。
都有一个句柄,句柄可以理解为唯一ID,或者身份证号。
主线程只有一个,就是消息循环。
while(从消息队列获取消息,点击事件等){
根据句柄分发消息。是按钮1处理?还是窗口1处理?还是窗口2处理?还是文本框重绘?
}
Main
{
....
form0.Show();
form1.Show();
Application.Run(new Form);
}
上面有三个窗口,都在主线程,同时也叫UI线程。
work线程是单起的。
多个Form 和多个Button, 多个Label一样, 都是控件,都有一个句柄来接受Windows消息。他们地位一样的。
主线程 (UI线程)消息循环伪代码:
while(GetMessage()){
if messge belong button1
button1.WndProc()
else if messge belong form1
form1.WndProc()
else if messge belong form2
form2.WndProc()
}
实际上那么多控件,肯定不是通过If else 来判断,而是通过句柄来分发消息的。
主线程只有一个
可以理解为 只有一个主线程 ,但是没有UI线程这一说, 可以理解为 UI都是由主线程创建和控制的,
不管你开多少个窗口,只要是在这个程序里面的窗口 都只有一个主线程, 意思是你开了三个窗口 那么这三个窗口的UI元素 都是由主线程创建的。