多線程的使用方法:
Thread t = new Thread(new ThreadStart (StartMethod));t.Start(); PRivate void StartMethod() { Thread.Sleep(5000); MessageBox.Show("c"); }
多線程的功能和異步調(diào)用一樣,都是為了不等調(diào)用的函數(shù)運行完,就繼續(xù)剩下的語句。
ParameterizedThreadStart是面向帶參數(shù)的方法,參數(shù)的類型是object。StartMethod()是不帶參數(shù)的方法。StartMethod(object i)就是帶參數(shù)的方法,這個誰都知道哈~
t.IsBackground = true;
這句代碼的意思就是等主程序跑完,如果支線程的代碼還沒跑完,那就不好意思啦,直接掐屎。。
這個時候腫么辦呢,人家還不想這么早跟這個世界說寨見呢。。。
只要在主程序的最后加上 t.Join();就可以啦~。
為什么要使用this.invoke呢,感覺它跟直接調(diào)用函數(shù)沒什么差別,但是如果要在支線程的函數(shù)中給控件賦值,代碼就會報錯,這個時候this.invoke,this.begininvoke都就可以拿來用了,這樣就不會報錯了。
public void DoWork(){MyInvoke mi = new MyInvoke(Updatetxt);this.BeginInvoke(mi, new Object[] {"我是文本框"});}public void Updatetxt(string param){textBox1.Text = param;}
新聞熱點
疑難解答