网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

C#下的消息回调处理

其实,我至今为止还不清楚delegate的用法,反正在线程间或进程间的数据交互大多需要此关键字来实施,我在上一篇博文用了C#函数指针的方法进行参数的跨线程传递,现在则采用更为常规的办法——消息响应。说实话,C#下面的消息响应方式还真不好理解,远没有C++下的映射好理解。

成都创新互联成立与2013年,先为镶黄等服务建站,镶黄等地企业,进行企业商务咨询服务。为镶黄企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

事实上,我们可以通过双击窗体,在工程自动添加的消息响应函数来观察一下,如下所示:

this.Load += new System.EventHandler(this.Form1_Load);像这个“+=”的符号就是一个挺费解的东西,上面的似乎可以这个么理解,将Form1_Load的响应函数添加到Load类型的消息队列里,通过delegate应该会将每个响应函数配置一个唯一的标识符,然后才可以达到类似映射的效果。

以下是我封装的一个事件类,若需要事件响应的类都可以在此基础上继承:

/// 
/// 定义消息的类型
/// 
/// 接收器
/// 参数
public delegate void MyEventHandler(object sender, EventArgs e);
/// 
/// 通用事件类
/// 
public class MyEvent
{
    /// 
    /// 定义事件队列
    /// 
    private event MyEventHandler _myEvent;
    /// 
    /// 基本构造函数
    /// 
    public MyEvent(MyEventHandler hEventFunc)
    {
        this._myEvent += new MyEventHandler(hEventFunc);
    }
    /// 
    /// 事件的触发函数
    /// 
    /// 
    protected void OnEvent(EventArgs e)
    {
        this._myEvent(this, e);
    }
    /// 
    /// 触发事件
    /// 
    public void RaiseEvent()
    {
        EventArgs e = new EventArgs();
        this.OnEvent(e);
    }
}

使用时,如下所示:

//使用一个WinForm的应用程序
public partial class Form1 : Form
{
    //事件类
    private MyEvent et;
    public Form1()
    {
        InitializeComponent();
        //将本类的消息响应函数传递至事件类et中
        this.et = new MyEvent(this.OnTest);
        //触发事件响应
        et.RaiseEvent();
    }
    /// 
    /// 消息响应函数
    /// 
    /// 
    /// 
    public void OnTest(object sender, EventArgs e)
    {
        //随便写写
        Debug.WriteLine(e.ToString());
    }
}

于是,当在某种情况下(自定义),使MyEvent类触发了消息,于是通过event调用了Form1类的OnTest函数,这就算完成了完整的一个消息响应了。


标题名称:C#下的消息回调处理
本文网址:http://bjjierui.cn/article/ihppss.html

其他资讯