1.多线程
IsBackground对线程的重要作用
要点:
1、当在主线程中创建了一个线程,那么该线程的IsBackground默认是设置为FALSE的。
2、当主线程退出的时候,IsBackground=FALSE的线程还会继续执行下去,直到线程执行结束。
3、只有IsBackground=TRUE的线程才会随着主线程的退出而退出。
4、当初始化一个线程,把Thread.IsBackground=true的时候,指示该线程为后台线程。后台线程将会随着主线程的退出而退出。
5、原理:只要所有前台线程都终止后,CLR就会对每一个活在的后台线程调用Abort()来彻底终止应用程序。
例如:在窗体上面执行一个对文本框值从0--10000这样一个过程。
1.如果直接用UI线程来操作的话,只能执行完成后,窗体才能拖动。
2.UI线程,显示窗体,点击按钮后,再创建一个线程来调用方法改变文本框中的值。
Thread thread=new Thread(CountandShow);//
thread.Isbackground=true;
thread.start();
3.多线程带1个参数
Thread thread=new Thread(CountandShow);
void CountandShow(object ojb)// 带object 的参数,当要传递多个参数时,可以定义一个类,传递进去。
thread.Isbackground=true;
thread.start(参数值);
4多线程执行带多个参数
Thread thread=new Thread(CountandShow);
void CountandShow(object obj)
{
list<string> lsit=obj as list<string>;
foreach(string s in list)
{
//todo...
}
}
thread.IsBackground=true;
List<string> list=new List<string>;
list.add("fdsa");
list.add("fffa");
thread.start();