yoohoo音译歌词,夜班经理第一季下载,老何和雪梅偷媳01
主线程和子线程的区别
每个线程都有一个唯一标示符,来区分线程中的主次关系的说法。
线程唯一标示符:thread.currentthread.managedthreadid;
不多说了。看下面的测试代码注释吧。
public delegate void dele(); public partial class form1 : form { int ida; public dele getlab; public form1() { initializecomponent(); ida = thread.currentthread.managedthreadid;//ui界面主线程 /* * main函数为主线程,id标示符与ui界面主线程相同。 */ } thread thread; private void getbtu_click(object sender, eventargs e)//ui控件属于主线程 { int idb = thread.currentthread.managedthreadid; getlab = new dele(getlabel);//委托添加方法 getlab += new dele(gg);//委托在叠加一个方法 getlab += new dele(kk);//委托在叠加一个方法 // thread = new thread(new threadstart(delegate { int idc = thread.currentthread.managedthreadid;//thread开辟一个子线程 //gg();//方法直接在thread里面调用均为子线程 //kk();//方法直接在thread里面调用均为子线程 getlab();//委托直接在thread里面调用,委托里面的方法为子线程 //以上因为都包含在thread里面 messagebox.show("显示完成"); //this.invoke(getlab); /*错误提示:主线程调用主线程当然会假死*/ })); thread.isbackground = true; thread.start(); } public void kk()//委托中的方法 委托方法三 { int idr = thread.currentthread.managedthreadid; this.invoke((dele)(() =>//修改ui界面值则需要加this.invoke { label2.text = "abc"; })); } public void gg()//委托中的方法 委托方法二 { int idp = thread.currentthread.managedthreadid; this.invoke((dele)(() =>//修改ui界面值则需要加this.invoke { label3.text = "qwe"; })); } public void getlabel()//委托中的方法 委托方法一 { int idd = thread.currentthread.managedthreadid;//子线程 for (int i = 0; i <= 1000; i++) { thread.sleep(10); //this.invoke为主线程,执行子线程的内容 this.invoke((dele)(() => { getlabel.text = i.tostring(); int ide = thread.currentthread.managedthreadid;//主线程 console.writeline("线程ide:" + ide); })); console.writeline(i); } messagebox.show("显示完成"); } private void sleepbtu_click(object sender, eventargs e)//ui控件属于主线程 { int idf = thread.currentthread.managedthreadid; try { if (thread.threadstate != threadstate.suspended) { thread.suspend(); } } catch (exception r) { messagebox.show(r.message); } } private void setbtu_click(object sender, eventargs e)//ui控件属于主线程 { int idg = thread.currentthread.managedthreadid; try { if (thread.threadstate != threadstate.running) { thread.resume(); } } catch (exception r) { messagebox.show(r.message); } } public void getlabel_click(object sender, eventargs e) { } }
总结:
1. 什么是子线程?
包含在 thread thread = new thread(new threadstart(delegate{}));里面均视为子线程。
2. 什么是主线程?
当一个程序启动时,就有一个进程被操作系统(os)创建,与此同时一个线程也立刻运行,该线程通常叫做程序的主线程(main thread),因为它是程序开始时就执行的,如果你需要再创建线程,那么创建的线程就是这个主线程的子线程。每个进程至少都
有一个主线程,在winform中,应该就是创建gui的线程。
主线程的重要性体现在两方面:
1.是产生其他子线程的线程;
2.通常它必须最后完成执行比如执行各种关闭动作。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android studio开发小型对话机器人app(实例代码)
Android通过Java sdk的方式接入OpenCv的方法
Android 通过cmake的方式接入opencv的方法步骤
Android Studio finish()方法的使用与解决app点击“返回”(直接退出)
Android 进度条 ProgressBar的实现代码(隐藏、出现、加载进度)
网友评论