首页 新闻 会员 周边

C#程序只有一个主线程吗

0
悬赏园豆:5 [已关闭问题] 关闭于 2017-10-30 10:30

C#程序只有一个主线程吗?

主线程是不是就是UI线程?

那开2个窗口,是不是就是2个UI线程了?

萨尔的主页 萨尔 | 初学一级 | 园豆:20
提问于:2017-07-21 10:58
< >
分享
所有回答(9)
0

进程中就只有一个线程,或者第一个线程,我们就叫它主线程,如同公司中的老板,通常是Main()主函数。如果有一天公司扩大了,就需要请员工了,多人同时工作,也就是多个线程一起工作,这就叫做多线程

没什么比你更优秀 | 园豆:130 (初学一级) | 2017-07-21 11:18

恩!但是我问的不是这个哦!!

支持(0) 反对(0) 萨尔 | 园豆:20 (初学一级) | 2017-07-21 15:03
0

主线程只有一个,线程可以有多个

秋壶冰月 | 园豆:5903 (大侠五级) | 2017-07-21 17:13

UI线程是不是就是主线程?

主线程是不是就是UI线程?

支持(0) 反对(0) 萨尔 | 园豆:20 (初学一级) | 2017-07-21 23:51
0

UI线程默认就是主线程,除非,你自己在主线程里写了别的代码,然后又用子线程来开启UI,这样UI线程就不是主线程了

岂止是一丝涟漪 | 园豆:316 (菜鸟二级) | 2017-07-22 15:56
0

是的,你程序一启动默认最先执行的就是UI主线程里面的代码,如果在执行主线程代码期间你又创建了其它线程,那么UI线程和其它的线程将会并行,当然如果你两个线程之间要调用代码那又会涉及到线程同步。

码农改变世界lyf | 园豆:46 (初学一级) | 2017-07-22 16:52
0

主线程只有一个,就是Main函数所在的线程,严格意义上来讲,没有UI线程这个说法,不过一般情况下,UI响应都是发生在主线程上,即使启动多个窗口也一样。

就你的问题来说,主线程只有一个,一般情况下,UI线程就是主线程,即使启动多个窗口也是都在同一个线程(主线程)上。

天方 | 园豆:5407 (大侠五级) | 2017-07-22 18:52

即使启动多个窗口也是都在同一个线程(主线程)上。

多个窗口应该是不同线程上的吧?

支持(0) 反对(0) 萨尔 | 园豆:20 (初学一级) | 2017-07-22 20:54

@luanwj: 他的意思是说,你在一个父窗体中开了很多个子窗体,那么都是在同一主线程,如果你是打开很多个窗体程序那么就会有多个线程在运行。

支持(0) 反对(0) 码农改变世界lyf | 园豆:46 (初学一级) | 2017-07-22 22:09

多个form 和 多个button一样,都是普通控件,地位一样。

都有一个句柄,句柄可以理解为唯一ID,或者身份证号。

主线程只有一个,就是消息循环。

while(从消息队列获取消息,点击事件等){

      根据句柄分发消息。是按钮1处理?还是窗口1处理?还是窗口2处理?还是文本框重绘?

}

支持(0) 反对(0) 刀是什么样的刀 | 园豆:910 (小虾三级) | 2017-07-25 11:18
0

Main 

  ....

  form0.Show();

  form1.Show();

  Application.Run(new Form);

上面有三个窗口,都在主线程,同时也叫UI线程。

work线程是单起的。

花飘水流兮 | 园豆:13560 (专家六级) | 2017-07-22 19:41
0

多个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 来判断,而是通过句柄来分发消息的。

刀是什么样的刀 | 园豆:910 (小虾三级) | 2017-07-25 11:10
0

主线程只有一个

青鋒 | 园豆:5 (初学一级) | 2017-08-01 16:21
0

可以理解为 只有一个主线程 ,但是没有UI线程这一说, 可以理解为 UI都是由主线程创建和控制的,

不管你开多少个窗口,只要是在这个程序里面的窗口 都只有一个主线程, 意思是你开了三个窗口 那么这三个窗口的UI元素 都是由主线程创建的。

丶被遗忘者 | 园豆:18 (初学一级) | 2017-08-07 13:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册