今天给大家分享一种用c#多线程中通过委托实现子线程执行完后通知主线程的方法,希望对你的开发有所帮助。
具体实现如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace MultiThreadsDelegateCallback
{
class Program
{
static void Main(string[] args)
{
//程序开始的时候,把回调的方法给委托变量
CallBackDelegate cbd = CallBack;
//启动线程
Thread th = new Thread(Fun);
//开始线程,代入参数
th.Start(cbd);
Console.ReadKey();
}
//定义一个委托实现回调函数
public delegate void CallBackDelegate(string message);
//线程执行的方法 参数是个委托, 线程中参数需要用object类型.
public static void Fun(object o)
{
var i = 0;
//这里是你的操作代码,循环,根据条件退出while
while (i <= 10)
{
Console.WriteLine("子线程:{0}", i);
Thread.Sleep(500);
i++;
}
//把传来的参数转换为委托
var cbd = o as CallBackDelegate;
//执行回调.
cbd("子线程已完成,这是子线程回调的信息");
}
//回调方法
private static void CallBack(string message)
{
//主线程报告信息,可以根据这个信息做判断操作,执行不同逻辑.
Console.WriteLine("Callback:{0}", message);
}
}
}
执行结果如图:
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册