C# 高定位高效率程式中 線程與線程池比較

來源:互聯網
上載者:User

應用程式可以擁有多個線程,當程式需要大量時間來處理部分業務或流程時,就可以通過線程來操作,如果應用程式沒有用到線程,那將會出現很麻煩的事情,例如:介面上有個dataGridView需要填充資料,如果有Form_Load事件中實現資料繫結,如果在主線程中操作,那麼你運行開啟表單的時候就會出現程式假死的現象.這不是客戶所接受的,所以在程式開發中,線程的應用是不可缺少的一部分.

我們用多線程來開發程式,目的就是減少處理器單元的閑置時間,增加處理器單元的操作能力.但這並不能說明在程式中可以泛用多線程,應用不當,會降低系統的效能.例如:如果完成一個作業需要的時間為N,在多線程的情況下,建立線程需要的時間為N0,線程中處理的作業需要的時間為N1,線程銷毀需要的時間是N3,還有一些其它的時間這裡就不算了,這裡可以看出如果作業流程簡單的,佔用資源和時間不長的則不需要利用一個線程來處理,如果一個作業需要不停的建立線程則需要利用到線程池,從而提高程式的效能.

需要多線程作業,需要添加System.Threading命名空間,下面細說一個Thread的操作:

通過Thread一次使用一個線程,來建立和刪除線程.
建立線程: 
Thread th = new Thread(new ThreadStart(Method));
開始線程:
th.Start();
銷毀線程:
th.Abort();
線程名稱:
th.Name="A";
線程休眠:
th.Sleep();
線程掛起:
th.Suspend();
線程恢複:
th.Resume();
說到Thread還有一個方法就是設定後台線程
IsBackground屬性設為true,該線程即為後台線程。
後台線程跟前台線程只有一個區別,那就是後台線程不妨礙程式的終止。一旦一個進程所有的前台線程都終止後,
CLR將通過調用任意一個存活中的後台進程的Abort()方法來徹底終止進程。注意:後台線程不能直接操作所在進程
之外的資料引用。

 

通過ThreadPool來建立線程,如果你的程式需要頻繁的建立線程的時候你就可以用到這個類,用實現建立線程,提高程
序的效能.通過ThreadPool.QueueUserWorkItem(new WaitCallback(Method), 1)來建立線程池下面請看一下面的代碼:
private void button2_Click(object sender, EventArgs e)
{
    int maxTh, minTh, portTh;  

    ThreadPool.GetMaxThreads(out maxTh, out portTh);
    ThreadPool.GetMinThreads(out minTh, out portTh);
    richTextBox1.Text = maxTh.ToString() + " , " + minTh.ToString() + " , " + portTh.ToString() + "\n";

    ThreadPool.QueueUserWorkItem(new WaitCallback(A1), 1);
    ThreadPool.QueueUserWorkItem(new WaitCallback(A2), 1);
}

private void A1(object i)
{
    string str = i.ToString();
    if (this.InvokeRequired)
    {
updateRichTxt ur = new updateRichTxt(UpdateRT);
this.Invoke(ur, str);
    }
}
private void A2(object i)
{
    string str = ((int)i + 1).ToString();
    if (this.InvokeRequired)
    {
updateRichTxt ur = new updateRichTxt(UpdateRT);
this.Invoke(ur, str);
    }
}

private delegate void updateRichTxt(string iTxt);

private void UpdateRT(string iTxt)
{
    richTextBox1.Text = richTextBox1.Text + iTxt + "\n";
}
到這裡你應該清楚,多線程的正確應用.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.