C# 非同步呼叫與線程總結

來源:互聯網
上載者:User

http://blog.163.com/prince.king_521/blog/static/106891204201172010749138/?latestBlog

1、前台線程和後台線程的基本概念

    前台線程和後台線程的主要區別就是:應用程式必須運行完所有的前台線程才可以退出;而對於後台線程,應用程式則可以不考慮其是否已經運行完畢而直接退出,所有的後台線程在應用程式退出時都會自動結束。

      注意:通過Thread類建立的線程都是前台線程。線程池ThreadPool(後面將會介紹)中的線程都是後台線程。

非同步委託調用時啟用線程池執行,因此,非同步委託執行的線程是後台線程。


    在使用Thread建立前台線程時,可以通過IsBackground屬性以確定該線程是前台線程還是後台線程。參看如下代碼:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace BackAndForThread
{
     class Program
    {
          static void Main(string[] args)
       {
           Thread t1 = new Thread(ThreadNew);
            t1.Name = "NewThread";
           //IsBackground屬性設定為false時 線程 NewThread是可以在主線程執行完畢後列印出兩條訊息的
           //IsBackground如果為true,則在主線程結束後,就列印不出第二條訊息了 因為主線程(前台線程)結束了,後台線程也就跟著退出了。
            t1.IsBackground = false;
             t1.Start();
           Console.WriteLine("主線程已經結束");
        }
  
         static void ThreadNew() {
          Console.WriteLine("新的線程開始輸出訊息");
              Thread.Sleep(4000);//停止4秒中讓主線程可以比NewThread提前結束
             Console.WriteLine("新的線程結束輸出訊息");
             Console.ReadKey();
      }
   }
 }2、前台線程和後台線程適合的場合

    通常,應該將被動偵聽活動的線程設定為後台線程,而將負責發送資料的線程設定為前台線程,這樣,在所有的資料發送完畢之前該線程不會被終止。只有在確認線 程被系統隨意終止沒有不利影響時,才應該使用後台線程。如果線程正在執行必須完成的敏感操作或事務操作,或者需要控制關閉線程的方式以便釋放重要資源,則 使用前台線程。

例如 《C#進階編程》中有個例子--如果關閉Word程式,拼字檢查器還在運行其進程就沒有意義了。在關閉應用程式時拼字檢查器線程就可以關閉。

3、非同步委託非同步委託:非同步呼叫不阻塞主線程,而是把調用線上程池中的新線程中執行,我們可以不必關心,也無需關心這個“新線程”是怎麼定義的

     委託的非同步呼叫通過BeginInvoke和EndInvoke來實現。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.