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

来源:互联网 发布:linux 目录别名 编辑:程序博客网 时间:2024/05/17 09:34

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

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);    }}


自己写的

namespace ConsoleTest{    public delegate void MyCallback();    class Program    {        //主线程方法        static void Main(string[] args)        {            MyCallback d = new MyCallback(ExecAction);//创建一个委托对象            ParameterizedThreadStart ts = new ParameterizedThreadStart((obj) =>             {                 Console.Write("子线程执行");                 MyCallback del = (MyCallback)obj;                                 //之线程执行完毕执行委托方法通知主线程                del();             });                     Thread t = new Thread(ts);            t.Start(d);            Console.Read();        }        //主线程的方法        public static void ExecAction()        {            Console.Write("亲爱的主线程,那么名字叫t的子线程执行完毕了!");        }    }}



原创粉丝点击