线程调用主窗体控件(委托)

本文通过生动的例子解释了C#中的委托概念及其在事件通知机制中的应用,并提供了具体的编程实例,展示了如何使用委托实现线程间的通信。

A、委托定义:

    C#用委托来实现事件通知机制。委托相当与c++函数指针。整个过程涉及一个呼叫者,一个被呼叫者,还有就是这个委托。

 

    委托:讲的通俗点,就是在某个时候自己有些事没法做,跟刚好在做些事的人约好说‘你要做你的事的时候顺便帮我把我的事情做了’

 

B、举例:

1、现在你还在上班, 本来约定好今天接孩子回家是你的事(线程)

2、你的老婆下班了,要去买菜回家煮饭(主线程在做这些事)

3、那你先打电话告诉老婆(声明委托)

4、今天你比较晚下班,让你老婆在买菜的时候把孩子接回家(定义委托事件和内容)

5、你老婆接到电话后给自己添加了一个事情,即买菜的时候接孩子回家(也就是主线程加载这个事件)

 

6、回到开始,接孩子回家的事情,是你委托给你老婆去做的。最后接孩子回家的事情就这样完成了。

 

C、 实现步骤:

       1、声明委托    

    2、定义呼叫者和调用的函数     

       3、定义被呼叫者和具体实现的函数(被调用的函数)

D、编程实例:

第一例:线程调用主窗体函数给主窗体的Label赋值

 

1、  定义线程类:

 

 定义委托事件

 public delegate void SetCusInfoEventHandler(string value);

 public event SetCusInfoEventHandler SetCusInfo;

 

    class Thread_GetCusInfo

    {

       //         数据绑定事件

        public delegate void SetCusInfoEventHandler(string value);

        public event SetCusInfoEventHandler SetCusInfo;

 

        private Thread thr_SetCusInfo;

 

        public void run()

        {

            thr_SetCusInfo = new Thread(new ThreadStart(GetCusInfo));

            thr_SetCusInfo.Start();

        }

 

        public void stop()

        {

            if (thr_SetCusInfo != null && thr_SetCusInfo.IsAlive)

            {

                thr_SetCusInfo.Abort();

            }

        }

 

        public void GetCusInfo()

        {

 

            if(SetCusInfo!=null)

               SetCusInfo("13505925164");

        }

}

 

2、  定义呼叫者和要调用的函数

Thread_GetCusInfo  thrGetCusInfo = new Thread_GetCusInfo();

            thrGetCusInfo.SetCusInfo+=new Thread_GetCusInfo.SetCusInfoEventHandler(SetCusInfo);

 

 

3、  定义被调用的函数

private void SetCusInfo(string value)

{

      lbServicePhone.Text = value;

}

 

4、启动线程

 

在需要启动线程的函数中加入如下语句

(new Thread_GetCusInfo) .run();

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值