一般一個(gè)程序一個(gè)進(jìn)程,代碼是存在進(jìn)程中的,進(jìn)程本身不執(zhí)行代碼, 執(zhí)行代碼的是線程。
一般一個(gè)進(jìn)程里就一個(gè)線程。(一個(gè)商店就一個(gè)老板娘。)
進(jìn)程就是在內(nèi)存中開辟了一個(gè)空間。代碼,圖片。。等就存在這個(gè)空間里。代碼線程去執(zhí)行。
默認(rèn)只有一個(gè)線程。
systerm.threading //線程操作的類在這個(gè)命名空間下。
開啟一個(gè)線程,就是創(chuàng)建一個(gè)線程對象即可。
線程默認(rèn)情況下都是前臺線程。
要把所有的前臺線程執(zhí)行完后,程序才會退出。
進(jìn)程里默認(rèn)的線程叫主線程或者默認(rèn)線程,或UI線程。
后臺線程,只要所有的前臺線程結(jié)束,所有的后臺線程就直接結(jié)束。
Thread th = new Thread(Sum);th.Name ="線程1"; 給線程取名。調(diào)試的時(shí)候可以在輸出中看到具體名稱。th.IsBackground = true; th.Start(); th.Abort(); 強(qiáng)行終止線程。Thread.Sleep(1000); 暫停線程,單位是毫秒Thread cuTh = Thread.CurrentThread 得到當(dāng)前線程的引用。Thread類型。TextBox.CheckForIllegalCrossThreadCalls = false; //關(guān)閉空間的跨線程訪問檢查。 否則會出現(xiàn)如下錯(cuò)誤


同一個(gè)進(jìn)程中的多個(gè)線程之間可以“并發(fā)”執(zhí)行。
多個(gè)線程訪問同一資源, 可能造成不同步的情況,這個(gè)叫做線程重入。
應(yīng)對此情況,可加鎖處理。
PRivate void CountNum() { lock (this) { for (int i = 0; i < 10000; i++) { int num = int.Parse(textBox1.Text.Trim()); num++; textBox1.Text = num.ToString(); } } }

需要傳一個(gè)委托對象。ThreadStart ts = new ThreadStart(CountNum); Thread th = new Thread(ts); 等價(jià)于 Thread th = new Thread(CountNum); 本質(zhì)傳的是一個(gè)委托對象。 (CountNum是無參方法)
如果需要傳有參方法。
則是創(chuàng)建的ParameterizedThreadStart 的委托對象。


傳參是在Start方法中傳入;start方法有兩個(gè)重載。


新聞熱點(diǎn)
疑難解答
圖片精選