深刻C#並行編程(2) -- 使用線程

  1、可使用位於命名空間System.Threading中的Thrad類開啓線程:函數

//聲明一個新的線程
Thread myThread = new Thread(LoopFunc); //傳遞一個ThreadStart類型的委託(public delegate void ThreadStart())
//開啓該線程
myThread.Start();
//循環函數
void LoopFunc()
{
    while (true)
    {
        //do…
        Thread.Sleep(1000); //用於暫停執行此函數的線程,單位毫秒(千分之一秒)
    }
}

  1.經過Thread類的靜態屬性CurrentThread能夠獲取執行當前函數所在的線程,經過實例屬性ManagedThreadId能夠查看當前線程的惟一標識符ID,經過實例屬性Name能夠獲取或設置當前線程的名稱;oop

  2.經過Thread類的實例屬性Priority能夠獲取或設置當前線程的優先級,線程的優先級使用枚舉ThreadPriority表示,包括從低到高共5個優先級;
經過Thread類的實例屬性ThreadState能夠獲取當前線程的狀態,線程的狀態使用枚舉組合ThreadState表示;
默認狀況下,使用Thread類建立的線程都是前臺前程,經過Thread類的實例屬性IsBackground能夠設置該線程是否爲後臺線程;post

  2、當須要開啓一個無限循環函數的線程時,通常經過while(true){}來實現,此時,如要正確結束該線程,須要修改循環條件,經過外部控制條件是否終止:spa

void LoopFunc()
{
    bool isContinue = true;
    AppManager.Instance.OnExitAction += () => //給應用關閉事件添加委託,修改執行的判斷條件
    {
        isContinue = false;
    }
    while (isContinue)
    {
        //do…
        Thread.Sleep(1000);
    }
    return;
}

 


若是您以爲閱讀本文對您有幫助,請點一下「推薦」按鈕,您的承認是我寫做的最大動力!線程

做者:Minotauros
出處:https://www.cnblogs.com/minotauros/code

本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。blog

相關文章
相關標籤/搜索