最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#子線程執(zhí)行完后通知主線程的方法

 更新時(shí)間:2016年12月05日 10:07:43   投稿:jingxian  
下面小編就為大家?guī)硪黄狢#子線程執(zhí)行完后通知主線程的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

其實(shí)這個(gè)比較簡(jiǎn)單,子線程怎么通知主線程,就是讓子線程做完了自己的事兒就去干主線程的轉(zhuǎn)回去干主線程的事兒。

那么怎么讓子線程去做主線程的事兒呢,我們只需要把主線程的方法傳遞給子線程就行了,那么傳遞方法就很簡(jiǎn)單了委托傳值嘛;

下面有一個(gè)例子,子線程干一件事情,做完了通知主線程

public class Program
  {
    //定義一個(gè)為委托
    public delegate void Entrust(string str);
    static void Main(string[] args)
    {
      Entrust callback = new Entrust(CallBack); //把方法賦值給委托
      Thread th = new Thread(Fun);
      th.IsBackground = true;
      th.Start(callback);//將委托傳遞到子線程中
      Console.ReadKey();
    }
    private static void Fun(object obj) {
      //注意:線程的參數(shù)是object類型
      for (int i = 1; i <= 10; i++)
      {
        Console.WriteLine("子線程循環(huán)操作第 {0} 次",i);
        Thread.Sleep(500);
      }
      Entrust callback = obj as Entrust;//強(qiáng)轉(zhuǎn)為委托
      callback("我是子線程,我執(zhí)行完畢了,通知主線程");
      //子線程的循環(huán)執(zhí)行完了就執(zhí)行主線程的方法
    }
    //主線程的方法
    private static void CallBack(string str) {
      Console.WriteLine(str);
    }
  }

上面就是一個(gè)通過委托進(jìn)行向主線程傳值(也就是通知主線程)的過程,上面我們是自己定義了一個(gè)委托,當(dāng)然我們也可以使用.NET為我們提供的Action<>和Fun<>泛型委托來處理,就像這樣

public class Program
  {
    //定義一個(gè)為委托
    public delegate void Entrust(string str);
    static void Main(string[] args)
    {
      Action<string> callback = ((string str) => { Console.WriteLine(str); });
      //Lamuda表達(dá)式
      Thread th = new Thread(Fun);
      th.IsBackground = true;
      th.Start(callback);
      Console.ReadKey();
    }
    private static void Fun(object obj) {
      for (int i = 1; i <= 10; i++)
      {
        Console.WriteLine("子線程循環(huán)操作第 {0} 次",i);
        Thread.Sleep(500);
      }
      Action<string> callback = obj as Action<string>;
      callback("我是子線程,我執(zhí)行完畢了,通知主線程");
    }

  }
 //上面的Lamuda表達(dá)式也可以回城匿名函數(shù)
 //Action<string> callback = delegate(string str) { Console.WriteLine(str); };

下面是運(yùn)行結(jié)果

以上這篇C#子線程執(zhí)行完后通知主線程的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • WPF實(shí)現(xiàn)圖片合成或加水印的方法【2種方法】

    WPF實(shí)現(xiàn)圖片合成或加水印的方法【2種方法】

    這篇文章主要介紹了WPF實(shí)現(xiàn)圖片合成或加水印的方法,結(jié)合實(shí)例形式分析了2種比較實(shí)用的WPF圖片操作相關(guān)技巧,需要的朋友可以參考下
    2017-03-03
  • 淺談C#中的常量、類型推斷和作用域

    淺談C#中的常量、類型推斷和作用域

    這篇文章主要介紹了C#中的常量、類型推斷和作用域,有需要的朋友可以參考一下
    2013-12-12
  • C#異常處理知識(shí)匯總

    C#異常處理知識(shí)匯總

    這篇文章主要介紹了C#異常處理的知識(shí),文中講解非常詳細(xì),配合代碼幫助大家更好的理解,感興趣的朋友可以參考下
    2020-06-06
  • 深入HTTP head的使用詳解

    深入HTTP head的使用詳解

    本篇文章是對(duì)HTTP head的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • WPF中MVVM模式的理解與實(shí)現(xiàn)

    WPF中MVVM模式的理解與實(shí)現(xiàn)

    MVVM是一種設(shè)計(jì)模式,特別適用于WPF(Windows Presentation Foundation)等XAML-based的應(yīng)用程序開發(fā),MVVM模式主要包含三個(gè)部分:Model(模型)、View(視圖)和ViewModel(視圖模型),本文給大家介紹了WPF中MVVM模式的理解與實(shí)現(xiàn),需要的朋友可以參考下
    2024-05-05
  • Unity 如何獲取鼠標(biāo)停留位置下的物體

    Unity 如何獲取鼠標(biāo)停留位置下的物體

    這篇文章主要介紹了Unity 如何獲取鼠標(biāo)停留位置下的物體,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 淺談C#中的string駐留池

    淺談C#中的string駐留池

    這篇文章主要介紹了C#中的string駐留池的的相關(guān)資料,文中示例代碼非常細(xì)致,供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • Unity Shader實(shí)現(xiàn)序列幀動(dòng)畫效果

    Unity Shader實(shí)現(xiàn)序列幀動(dòng)畫效果

    這篇文章主要為大家詳細(xì)介紹了Unity Shader實(shí)現(xiàn)序列幀動(dòng)畫效果 ,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • 初學(xué)C#所需明白的那些點(diǎn)

    初學(xué)C#所需明白的那些點(diǎn)

    這篇文章主要介紹了初學(xué)C#所需明白的那些點(diǎn),以及一些零碎知識(shí)點(diǎn)筆記,以供大家學(xué)習(xí)參考
    2023-03-03
  • C#實(shí)現(xiàn)冒泡排序和插入排序算法

    C#實(shí)現(xiàn)冒泡排序和插入排序算法

    這篇文章介紹了C#實(shí)現(xiàn)冒泡排序和插入排序算法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04

最新評(píng)論

佛冈县| 五原县| 平武县| 平果县| 麦盖提县| 彝良县| 虹口区| 南通市| 尤溪县| 铜川市| 木里| 平罗县| 赫章县| 台山市| 丰城市| 宿松县| 河北省| 天水市| 武功县| 万源市| 茶陵县| 桂东县| 任丘市| 灵武市| 壤塘县| 康乐县| 邵阳市| 塘沽区| 黄山市| 民乐县| 克东县| 大英县| 体育| 当涂县| 揭西县| 长寿区| 兴国县| 商城县| 剑川县| 靖宇县| 昌黎县|