国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

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

2019-10-29 21:17:56
字體:
來源:轉載
供稿:網(wǎng)友

其實這個比較簡單,子線程怎么通知主線程,就是讓子線程做完了自己的事兒就去干主線程的轉回去干主線程的事兒。

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

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

public class Program  {    //定義一個為委托    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;//強轉為委托      callback("我是子線程,我執(zhí)行完畢了,通知主線程");      //子線程的循環(huán)執(zhí)行完了就執(zhí)行主線程的方法    }    //主線程的方法    private static void CallBack(string str) {      Console.WriteLine(str);    }  }

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

public class Program  {    //定義一個為委托    public delegate void Entrust(string str);    static void Main(string[] args)    {      Action<string> callback = ((string str) => { Console.WriteLine(str); });      //Lamuda表達式      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表達式也可以回城匿名函數(shù) //Action<string> callback = delegate(string str) { Console.WriteLine(str); };

下面是運行結果

子線程執(zhí)行完畢,C#

以上這篇C#子線程執(zhí)行完后通知主線程的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網(wǎng)。


注:相關教程知識閱讀請移步到c#教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 华池县| 革吉县| 莱州市| 恩平市| 伊金霍洛旗| 金阳县| 济阳县| 泗阳县| 曲周县| 抚州市| 平乐县| 扶风县| 酉阳| 伊春市| 云浮市| 阳西县| 岑溪市| 永修县| 清徐县| 高雄市| 库尔勒市| 丰原市| 南漳县| 邮箱| 淮阳县| 宿迁市| 睢宁县| 台北市| 同德县| 龙井市| 凤冈县| 平南县| 桐柏县| 大田县| 安庆市| 共和县| 隆子县| 锦州市| 安远县| 射阳县| 金华市|