多线程的使用(三)

来源:互联网 发布:php检测w3c 编辑:程序博客网 时间:2024/05/17 09:15
        在编写Winform应用程序的时候,经常会用到多线程,下面是我的一些笔记:
//不带参数的多线程调用方法;private void DoSomeThing(){  MessageBox.Show("Thread Start");}private void DoWork(){  Thread t=new Thread(new ThreadStart(this.DoSomeThing));  t.Start();}//带参数的多线程调用方法;private void DoSomeThing(object o){  MessageBox.Show(o.ToString());}private void DoWork(){  Thread t=new Thread(new ParameterizedThreadStart(DoSomeThing));  t.Start("JFJEJFNEJ");}//众所周知,新开一个线程代价是很高昂的,如果我们每个操作都新开一个线程,那么太浪费了,于是,下面使用线程池。无参数传递:private void DoWork(){  ThreadPool.QueueUserWorkItem(new WaitCallback(this.DoSomeThing));}private void DoSomeThing(){  Messagebox.Show("Thread无参数传递!")}//有参数传递private void DoWork(){  ThreadPool.QueueUserWorkItem(new WaitCallBack(this.DoSomeThing),"线程池的参数");}private void DoSomeThing(object o){  messagebox.show(o.tostring());}//使用匿名方法更灵活private void DoWork(){  string name="guodiegang";  ThreadPool.QueueUserWorkItem(new WaitCallback(delegate(object o){  MessageBox.Show(name);  }));}//如果Invoke调用主窗体之后,还希望在调用完后得到一个返回值:private void DoWork(){  WaitCallback wc=new WaitCallback(this.DoSomeThing);  ThreadPool.QueueUserWorkItem(wc,"参数");}private void DoSomeThing(object o){  System.Func<string,int> f=new Func<string,int>(this.GetId);  object result=f.Invoke(f,o.tostring());  MessageBox.Show(result.ToString());}private int GetId(string name){  this.textBox1.Text=name;  if(Name=="cao")  {      return 9898;  }  else    return 0;}
希望自己以后忘记了还能拿出来看看,不足之处望指出哦!!!再见
0 0