多線程的使用方法:
Thread t = new Thread(new ThreadStart (StartMethod)); t.Start(); private void StartMethod() { Thread.Sleep(5000); MessageBox.Show("c"); }
多線程的功能和異步調用一樣,都是為了不等調用的函數運行完,就繼續剩下的語句。
ParameterizedThreadStart是面向帶參數的方法,參數的類型是object。StartMethod()是不帶參數的方法。StartMethod(object i)就是帶參數的方法,這個誰都知道哈~
t.IsBackground = true;
這句代碼的意思就是等主程序跑完,如果支線程的代碼還沒跑完,那就不好意思啦,直接掐屎。。
這個時候腫麼辦呢,人家還不想這麼早跟這個世界說寨見呢。。。
只要在主程序的最後加上 t.Join();就可以啦~。
為什麼要使用this.invoke呢,感覺它跟直接調用函數沒什麼差別,但是如果要在支線程的函數中給控件賦值,代碼就會報錯,這個時候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; }