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();
C#委托与事件机制
本文通过生动的例子解释了C#中的委托概念及其在事件通知机制中的应用,并提供了具体的编程实例,展示了如何使用委托实现线程间的通信。
869





