程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> 使用.Net實現多線程經驗總結

使用.Net實現多線程經驗總結

編輯:ASP.NET基礎

1.簡述

  一般一個程序一個進程,代碼是存在進程中的,進程本身不執行代碼, 執行代碼的是線程。

  一般一個進程裡就一個線程。(一個商店就一個老板娘。)

  進程就是在內存中開辟了一個空間。代碼,圖片。。等就存在這個空間裡。代碼線程去執行。

  默認只有一個線程。

復制代碼 代碼如下:
systerm.threading //線程操作的類在這個命名空間下。

2.前台線程與後台線程

  開啟一個線程,就是創建一個線程對象即可。

  線程默認情況下都是前台線程。

  要把所有的前台線程執行完後,程序才會退出。

  進程裡默認的線程叫主線程或者默認線程,或UI線程。

  後台線程,只要所有的前台線程結束,所有的後台線程就直接結束。

復制代碼 代碼如下:
Thread th = new Thread(Sum);
th.Name ="線程1";    給線程取名。調試的時候可以在輸出中看到具體名稱。
th.IsBackground = true;  
th.Start(); 
th.Abort();   強行終止線程。
Thread.Sleep(1000);  暫停線程,單位是毫秒
Thread cuTh = Thread.CurrentThread  得到當前線程的引用。Thread類型。
TextBox.CheckForIllegalCrossThreadCalls = false; //關閉空間的跨線程訪問檢查。 否則會出現如下錯誤

 

3.線程重入

  同一個進程中的多個線程之間可以“並發”執行。

  多個線程訪問同一資源, 可能造成不同步的情況,這個叫做線程重入。

  應對此情況,可加鎖處理。

復制代碼 代碼如下:
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.線程對象本質(委托) 

4.1 無參方法     

需要傳一個委托對象。復制代碼 代碼如下: ThreadStart ts = new ThreadStart(CountNum); Thread th = new Thread(ts); 等價於 Thread th = new Thread(CountNum); 本質傳的是一個委托對象。 (CountNum是無參方法) 4.2 有參方法

  如果需要傳有參方法。

  則是創建的ParameterizedThreadStart 的委托對象。

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

小伙伴們是否對.net中使用多線程有所了解了呢,如有疑問,請留言。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved