时间:2021-05-20
其实这个比较简单,子线程怎么通知主线程,就是让子线程做完了自己的事儿就去干主线程的转回去干主线程的事儿。
那么怎么让子线程去做主线程的事儿呢,我们只需要把主线程的方法传递给子线程就行了,那么传递方法就很简单了委托传值嘛;
下面有一个例子,子线程干一件事情,做完了通知主线程
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#子线程执行完后通知主线程的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
异步调用无需等待,方法相当于子线程,后台执行,主线程执行完成,子线程开始执行。SpringBoot开启异步执行仅需两步:方法上加@Async@Override@
1.题目:主线程执行10次,子线程执行10次,此过程重复50次代码:packagecom.Thread.test;/**function:主线程执行10次,子线
一、主线程会等待所有的子线程结束后才结束首先我看下最普通情况下,主线程和子线程的情况。importthreadingfromtimeimportsleep,ct
关于阻塞主线程join的错误用法Thread.join()作用为阻塞主线程,即在子线程未返回的时候,主线程等待其返回然后再继续执行.join不能与start在循
前言相信每位Android开发者们都知道更新UI只能在主线程中进行,若是在子线程执行任务后需要更新UI,则需要借助handler跳转到主线程中。以下介绍几种操作