欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

實例代碼講解c# 線程(上)

 更新時間:2020年06月24日 16:49:37   作者:HueiFeng  
這篇文章主要介紹了講解c# 線程的的相關資料,文中示例代碼非常詳細,供大家參考和學習,感興趣的朋友可以了解下

簡介

過去普通計算機只有計算單元,卻不能同時執(zhí)行多個任務。然而操作系統(tǒng)卻已經(jīng)可以同時運行多個應用程序,即實現(xiàn)了多任務的概念。為了防止一個應用程序控制CPU而導致其他應用程序和操作系統(tǒng)本身永遠被掛起這一可能情況,操作系統(tǒng)不得不使用某種方式 將物理計算單元分割為一些虛擬的進程,并給予每個程序一定量的計算能力。此外,操作系統(tǒng)必須始終能夠優(yōu)先訪問CPU,并能調整不同程序訪問CPU的優(yōu)先級。線程正是這一概念的實現(xiàn)。可以認為線程是一個虛擬進程,用于獨立運行一個特定的程序。 (請記住線程會消耗大量的操作系統(tǒng)資源。多個線程共享一個物理處理器將導致操作系統(tǒng)忙于管理這些線程,而無法運行程序。)

接下來創(chuàng)建一個控制臺應用程序

class Program
   {
   static void Main(string[] args)
  {
   Thread t = new Thread(PrintNumbers);
   t.Start();
   PrintNumbers();
   Console.ReadKey();
  }
   static void PrintNumbers() {
   Console.WriteLine("Starting...");
   for (int i = 1; i < 10; i++)
   {
    Console.WriteLine(i);

   }
   }
}

結果兩組范圍為1到10的數(shù)字會隨機交叉輸出。這說明了printnumbers方法同時運行在主線程和另一個線程中。

static void DoNothing() {
   Thread.Sleep(TimeSpan.FromSeconds(2));
  }
  static void PrintNumbersWithStatus()
  {
   Console.WriteLine("Starting...");
   Console.WriteLine(Thread.CurrentThread.ThreadState.ToString());
   for (int i = 1; i < 10; i++) {
   Thread.Sleep(TimeSpan.FromSeconds(2));
   Console.WriteLine(i);
   }
  }

在main方法中加入以下代碼片段

Console.WriteLine("Starting program...");
   Thread t = new Thread(PrintNumbersWithStatus);
   Thread t2 = new Thread(DoNothing);
   Console.WriteLine(t.ThreadState.ToString());
   t2.Start();
   t.Start();
   for (int i = 1; i < 30; i++) {
    Console.WriteLine(t.ThreadState.ToString());
   }
   Thread.Sleep(TimeSpan.FromSeconds(6));
   t.Abort();
   Console.WriteLine("A thread has been aborted");
   Console.WriteLine(t.ThreadState.ToString());
   Console.WriteLine(t2.ThreadState.ToString());

工作原理 當主程序啟動時定義了兩個不同的線程。一個將被終止,另一個則會成功完成運行。線程狀態(tài)位于Thread對象的ThreadState屬性中。ThreadState屬性是一個C#枚舉對象。剛開始線程狀態(tài)為ThreadState.Unstarted。然后我們啟動線程,并估計在一個周期30次迭代的區(qū)間中,線程狀態(tài)會從ThreadState.Running變?yōu)門hreadState.WaitSleepJoin。 如果實際情況與以上不符,請增加迭代次數(shù),終止第一個線程后,會看到現(xiàn)在該線程狀態(tài)為ThreadState.Aborted。程序也有可能會打印出ThreadState.AbortRequested狀態(tài)。這充分說明了同步兩個線程的復雜性。請記住不要在程序中使用線程終止。我在這里使用他只是為了展示相應的線程狀態(tài)。最后可以看到第二個線程t2成功完成并且狀態(tài)為ThreadState.Stopped。另外還有一些其他的線程狀態(tài),但是要么已經(jīng)被棄用,要么沒有我們試驗過的幾種狀態(tài)有用。

到此這篇關于實例代碼講解c# 線程(上)的文章就介紹到這了,更多相關c# 線程內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 使用c#實現(xiàn)隨機數(shù)猜數(shù)游戲的示例代碼

    使用c#實現(xiàn)隨機數(shù)猜數(shù)游戲的示例代碼

    這篇文章主要介紹了使用c#實現(xiàn)隨機數(shù)猜數(shù)游戲的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • 基于C#自制批量doc轉換為docx的小工具

    基于C#自制批量doc轉換為docx的小工具

    "doc"?文件是一種常見的文件格式,通常用于存儲文本文檔,"docx"?文件是?Microsoft?Word?2007?及更高版本中使用的文檔文件格式的擴展名,下面我們就來看看如何使用C#實現(xiàn)批量doc轉換為docx吧
    2024-03-03
  • C#中ToString數(shù)據(jù)類型格式大全(千分符)

    C#中ToString數(shù)據(jù)類型格式大全(千分符)

    這篇文章主要介紹了C#中ToString數(shù)據(jù)類型格式大全 千分符,需要的朋友可以參考下
    2017-02-02
  • C#實現(xiàn)Word轉換TXT的方法詳解

    C#實現(xiàn)Word轉換TXT的方法詳解

    這篇文章主要為大家詳細介紹了如何利用C#實現(xiàn)Word轉換TXT的功能,文中的示例代碼講解詳細,對我們學習C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C#實現(xiàn)windows form限制文本框輸入的方法

    C#實現(xiàn)windows form限制文本框輸入的方法

    這篇文章主要介紹了C#實現(xiàn)windows form限制文本框輸入的方法,涉及C#限制文本框輸入的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • C#使用TimeSpan時間計算的簡單實現(xiàn)

    C#使用TimeSpan時間計算的簡單實現(xiàn)

    這篇文章主要給大家介紹了關于C#使用TimeSpan時間計算的相關資料,以及通過一個實例代碼給大家介紹了C#使用timespan和timer完成一個簡單的倒計時器的方法,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-06-06
  • C#使用Winform編寫一個圖片預覽器管理

    C#使用Winform編寫一個圖片預覽器管理

    這篇文章主要為大家詳細介紹了C#如何使用Winform編寫一個通用圖片預覽器管理,包含滾輪放大縮小,剪切,下一頁,方向變化等,需要的可以參考下
    2024-02-02
  • 簡單學習C#中的泛型方法使用

    簡單學習C#中的泛型方法使用

    這篇文章主要介紹了C#中的泛型方法使用,需要的朋友可以參考下
    2016-02-02
  • C#?使用com獲取Windows攝像頭列表

    C#?使用com獲取Windows攝像頭列表

    本文主要介紹了C#?使用com獲取Windows攝像頭列表,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • C#線程隊列用法實例分析

    C#線程隊列用法實例分析

    這篇文章主要介紹了C#線程隊列用法,以實例形式分析了C#線程隊列的創(chuàng)建、運行、等待、結束等操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09

最新評論