服务器之家

服务器之家 > 正文

C#子线程执行完后通知主线程的方法

时间:2021-12-13 14:54     来源/作者:C#教程网

其实这个比较简单,子线程怎么通知主线程,就是让子线程做完了自己的事儿就去干主线程的转回去干主线程的事儿。

那么怎么让子线程去做主线程的事儿呢,我们只需要把主线程的方法传递给子线程就行了,那么传递方法就很简单了委托传值嘛;

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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<>泛型委托来处理,就像这样

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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#子线程执行完后通知主线程的方法

以上这篇c#子线程执行完后通知主线程的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

标签:

相关文章

热门资讯

yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
2021年耽改剧名单 2021要播出的59部耽改剧列表
2021年耽改剧名单 2021要播出的59部耽改剧列表 2021-03-05
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部