使用.Net實現(xiàn)多線程經(jīng)驗總結(jié)
1.簡述
一般一個程序一個進(jìn)程,代碼是存在進(jìn)程中的,進(jìn)程本身不執(zhí)行代碼, 執(zhí)行代碼的是線程。
一般一個進(jìn)程里就一個線程。(一個商店就一個老板娘。)
進(jìn)程就是在內(nèi)存中開辟了一個空間。代碼,圖片。。等就存在這個空間里。代碼線程去執(zhí)行。
默認(rèn)只有一個線程。
systerm.threading //線程操作的類在這個命名空間下。
2.前臺線程與后臺線程。
開啟一個線程,就是創(chuàng)建一個線程對象即可。
線程默認(rèn)情況下都是前臺線程。
要把所有的前臺線程執(zhí)行完后,程序才會退出。
進(jìn)程里默認(rèn)的線程叫主線程或者默認(rèn)線程,或UI線程。
后臺線程,只要所有的前臺線程結(jié)束,所有的后臺線程就直接結(jié)束。
Thread th = new Thread(Sum);
th.Name ="線程1"; 給線程取名。調(diào)試的時候可以在輸出中看到具體名稱。
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)如下錯誤
3.線程重入
同一個進(jìn)程中的多個線程之間可以“并發(fā)”執(zhí)行。
多個線程訪問同一資源, 可能造成不同步的情況,這個叫做線程重入。
應(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();
}
}
}
4.線程對象本質(zhì)(委托)
4.1 無參方法
需要傳一個委托對象。
如果需要傳有參方法。
則是創(chuàng)建的ParameterizedThreadStart 的委托對象。
傳參是在Start方法中傳入;start方法有兩個重載。
小伙伴們是否對.net中使用多線程有所了解了呢,如有疑問,請留言。
相關(guān)文章
asp.net 動態(tài)表單之?dāng)?shù)據(jù)分頁
我們很常會在項目中提到一個動態(tài)表單的概念,比如學(xué)校里面學(xué)生的考試成績,當(dāng)學(xué)生登錄系統(tǒng)的時候,他當(dāng)然是希望看到他自己所有科目的成績;又或者是班主任,他需要看到本班同學(xué)所有科目的成績;這些時候我們一般都會在頁面中呈現(xiàn)如下的效果。2010-03-03關(guān)于dotnet?替換?ASP.NET?Core?的底層通訊為命名管道的?IPC?庫的問題
這篇文章主要介紹了dotnet?替換?ASP.NET?Core?的底層通訊為命名管道的?IPC?庫,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02GridView控件實現(xiàn)數(shù)據(jù)的顯示和刪除(第8節(jié))
這篇文章主要介紹了GridView控件實現(xiàn)數(shù)據(jù)的顯示和刪除,以新聞網(wǎng)站為例,實現(xiàn)對新聞數(shù)據(jù)的操作,了解各種數(shù)據(jù)源控件與數(shù)據(jù)綁定控件的類型和作用,需要的朋友可以參考下2015-08-08Asp.net MVC利用knockoutjs實現(xiàn)登陸并記錄用戶的內(nèi)外網(wǎng)IP及所在城市(推薦)
這篇文章主要介紹了 Asp.net MVC利用knockoutjs實現(xiàn)登陸并記錄用戶的內(nèi)外網(wǎng)IP及所在城市(推薦),需要的朋友可以參考下2017-02-02