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

C#多線程等待所有子線程結束的示例

 更新時間:2020年12月04日 09:58:24   作者:Bruce-  
這篇文章主要介紹了C#多線程等待所有子線程結束的示例,幫助大家更好的理解和學習c#編程語言,感興趣的朋友可以了解下

在使用多線程過程中,可能會遇到在一些情況下必須等待子線程全部執(zhí)行結束后主線程才進行下一步,

做法如下:

 //在使用多線程過程中,可能會遇到在一些情況下必須等待子線程全部執(zhí)行結束后主線程才進行下一步,做法如下
      List<ManualResetEvent> manualEvents = new List<ManualResetEvent>();//創(chuàng)建線程等待集合
      for (int i = 0; i < 64; i++) //WaitHandles 的數(shù)目必須少于或等于 64 個,所以最大線程數(shù)為64
      {
        MB m = new MB();//自定義類,用于傳參
        m.mre= new ManualResetEvent(false);
        m.ID = i;

        manualEvents.Add(m.mre);
        ThreadPool.QueueUserWorkItem(ThreadMethod, m);
      }
      WaitHandle.WaitAll(manualEvents.ToArray());//等待所有線程結束
      Console.WriteLine("Thread Finished!");
private static void ThreadMethod(object obj)
    {
      MB m = (MB)obj;
      Thread.Sleep(1000);//等待1秒,用于模擬系統(tǒng)在處理事情
      m.mre.Set();//將事件設置為終止狀態(tài)
      Console.WriteLine("Thread execute:" + m.ID);
    }

以上方法在處理時當線程數(shù)超過64時報錯 WaitHandles 的數(shù)目必須少于或等于 64 個,所以最大線程數(shù)為64
解決方法如下:

        using (var countdown = new MutipleThreadResetEvent(list.Count))
        {
          for (int i = 0; i < list.Count; i++)
          {
            //開啟N個線程,傳遞MutipleThreadResetEvent對象給子線程
            Param p = new Param();
            p.countdown = countdown;
            p.Path = pa[i];
            ThreadPool.QueueUserWorkItem(MyHttpRequest, p);
          }

          //等待所有線程執(zhí)行完畢
          countdown.WaitAll();
        }
public class MutipleThreadResetEvent: IDisposable
  {
    private readonly ManualResetEvent done;
    private readonly int total;
    private long current;

    /// <summary>
    /// 構造函數(shù)
    /// </summary>
    /// <param name="total">需要等待執(zhí)行的線程總數(shù)</param>
    public MutipleThreadResetEvent(int total)
    {
      this.total = total;
      current = total;
      done = new ManualResetEvent(false);
    }

    /// <summary>
    /// 喚醒一個等待的線程
    /// </summary>
    public void SetOne()
    {
      // Interlocked 原子操作類 ,此處將計數(shù)器減1
      if (Interlocked.Decrement(ref current) == 0)
      {
        //當所以等待線程執(zhí)行完畢時,喚醒等待的線程
        done.Set();
      }
    }

    /// <summary>
    /// 等待所以線程執(zhí)行完畢
    /// </summary>
    public void WaitAll()
    {
      done.WaitOne();
    }

    /// <summary>
    /// 釋放對象占用的空間
    /// </summary>
    public void Dispose()
    {
      ((IDisposable)done).Dispose();
    }
  }

以上就是C#多線程等待所有子線程結束的示例的詳細內容,更多關于c# 多線程等待子線程結束的資料請關注腳本之家其它相關文章!

相關文章

  • C# UDP網(wǎng)絡通信的實現(xiàn)示例

    C# UDP網(wǎng)絡通信的實現(xiàn)示例

    UDP協(xié)議是互聯(lián)網(wǎng)上使用最廣泛的傳輸協(xié)議之一,具有簡單、高效和不可靠的特點,本文主要介紹了C# UDP網(wǎng)絡通信的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • 通過?C#/VB.NET?代碼將?Excel?工作表拆分為單獨的文件

    通過?C#/VB.NET?代碼將?Excel?工作表拆分為單獨的文件

    這篇文章主要介紹了通過C#/VB.NET代碼將Excel工作表拆分為單獨的文件,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • C#中的委托數(shù)據(jù)類型簡介

    C#中的委托數(shù)據(jù)類型簡介

    委托是一個類型安全的對象,它指向程序中另一個以后會被調用的方法(或多個方法)。通過本文給大家介紹C#中的委托數(shù)據(jù)類型簡介,對c委托類型相關知識感興趣的朋友一起學習吧
    2016-03-03
  • C#中的CheckBox控件詳解與應用示例

    C#中的CheckBox控件詳解與應用示例

    在WPF(Windows Presentation Foundation)應用中,C#中的CheckBox控件是一種常用的用戶界面元素,允許用戶從多個選項中選擇一個或多個選項,本文將詳細介紹CheckBox控件的功能、使用方法以及在應用程序中的具體應用示例,需要的朋友可以參考下
    2024-04-04
  • .net 一些無法catch的異常

    .net 一些無法catch的異常

    .net 一些無法catch的異常,需要的朋友可以參考一下
    2013-04-04
  • C#中實現(xiàn)PriorityQueue優(yōu)先級隊列的代碼

    C#中實現(xiàn)PriorityQueue優(yōu)先級隊列的代碼

    這篇文章主要介紹了C#中PriorityQueue優(yōu)先級隊列的實現(xiàn),構造初始化這部分主要介紹關鍵的字段和方法,比較器的初始化以及堆的初始化,需要的朋友可以參考下
    2021-12-12
  • C#實現(xiàn)打印與打印預覽功能的思路及代碼

    C#實現(xiàn)打印與打印預覽功能的思路及代碼

    這篇文章主要介紹了C#實現(xiàn)打印與打印預覽功能的思路及代碼,有需要的朋友可以參考一下
    2013-12-12
  • C#實現(xiàn)繪制鼠標的示例代碼

    C#實現(xiàn)繪制鼠標的示例代碼

    這篇文章主要為大家詳細介紹了如何利用C#實現(xiàn)繪制鼠標的效果,文中的示例代碼講解詳細,對我們學習C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C#ComboBox控件“設置 DataSource 屬性后無法修改項集合”的解決方法

    C#ComboBox控件“設置 DataSource 屬性后無法修改項集合”的解決方法

    這篇文章主要介紹了C#ComboBox控件“設置 DataSource 屬性后無法修改項集合”的解決方法 ,需要的朋友可以參考下
    2019-04-04
  • 給 c# 程序員的十個重要提示

    給 c# 程序員的十個重要提示

    這篇文章主要介紹了給 c# 程序員的十個重要提示,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-02-02

最新評論