C#中委托和事件的应用理解

C#中委托和事件的理解使用

委托和事件的说明:
(1)C#中事件:事件是属于类的成员,所以要放在类的内部。
(2)委托属于一个定义,是和类、接口类似的,通常放在外部。
Preproc.cs
public class Preproc
{
//数据处理事件
EventHandler FirstConnectionEventHandler;

public Preproc()//构造函数
{
//关联事件
FirstConnectionEventHandler = new EventHandler(AddIpToList);

}

//将事件添加到事件队列中
gd.FirstConnectionHandlesEvent += FirstConnectionEventHandler;

//事件处理方法
protected virtual void AddIpToList(object sender, S7ClientEventArgs e)
{
List list1 = (List)e.Data;

        TraceData trda = new TraceData();

        foreach (TraceData sd in list1)
        {
            trda.data.IP = sd.data.IP;
            trda.data.Rack = sd.data.Rack;
            trda.data.Slot = sd.data.Slot;
            trda.siemensPLCSelected = sd.siemensPLCSelected;
        }
        list.Add(trda);

        //logger.Info("Sig recv\t\t"+ list.Count.ToString());
    }

GatherData.cs
///
/// 一次连接中途断开的处理事件
///
public event EventHandler FirstConnectionHandlesEvent;

    protected virtual void FirstConnectionEvent(List<TraceData> pkgList)
    {
        EventHandler<S7ClientEventArgs> temp = FirstConnectionHandlesEvent;
        if (temp != null) temp(this, new S7ClientEventArgs(pkgList));
    }

//事件触发
if (!PingIpOrDomainName(sv.Address))
{
TraceData trda = new TraceData();
trda.data.IP = sv.Address;
trda.data.Rack = GetRack;
trda.data.Slot = GetSlot;
trda.siemensPLCSelected = GetsiemensPLCS;
handlerlist.Add(trda);
FirstConnectionEvent(handlerlist);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值