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

首頁 > 編程 > C# > 正文

C#子線程執行完后通知主線程的方法

2020-01-24 00:54:44
字體:
來源:轉載
供稿:網友

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

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

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

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) {      //注意:線程的參數是object類型      for (int i = 1; i <= 10; i++)      {        Console.WriteLine("子線程循環操作第 {0} 次",i);        Thread.Sleep(500);      }      Entrust callback = obj as Entrust;//強轉為委托      callback("我是子線程,我執行完畢了,通知主線程");      //子線程的循環執行完了就執行主線程的方法    }    //主線程的方法    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("子線程循環操作第 {0} 次",i);        Thread.Sleep(500);      }      Action<string> callback = obj as Action<string>;      callback("我是子線程,我執行完畢了,通知主線程");    }  } //上面的Lamuda表達式也可以回城匿名函數 //Action<string> callback = delegate(string str) { Console.WriteLine(str); };

下面是運行結果

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吉林市| 荣成市| 梅州市| 方城县| 安福县| 温州市| 尼木县| 汉源县| 左权县| 安顺市| 汝州市| 东阿县| 安阳县| 武乡县| 漳平市| 九台市| 葵青区| 马关县| 麻栗坡县| 雅江县| 诏安县| 湘潭市| 苏尼特左旗| 榆树市| 塔河县| 惠东县| 古丈县| 临湘市| 洛阳市| 莱州市| 西峡县| 桦川县| 公主岭市| 黎城县| 信宜市| 鹤峰县| 略阳县| 南召县| 慈溪市| 大同市| 九龙县|