博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Delegate(代理)异常:该委托必须有一个目标
阅读量:7082 次
发布时间:2019-06-28

本文共 1291 字,大约阅读时间需要 4 分钟。

转自

在代理调用BeginInvoke(new AsyncCallback(callBack), null);时,会抛这个异常的原因是该代理变量代理了一个以上的方法.

解决方法

Ⅰ.可以通过事件将这些方法打包在一起(假设打包的方法为AXPatch),然后再用代理调用这个打包的方法AXPatch().

 

/// /// 异步发送下行消息。/// /// 下行消息public void Send(Message.CmppSubmit message){    try    {        CmppSubmitHandler handler = new CmppSubmitHandler(this.SendInternal);        handler.BeginInvoke(message,new AsyncCallback(this.SendCallback),message);        }    catch(Exception ex)    {        Sinosky.Diagnostics.EventLog.WriteEntry(this,ex);    }}private void SendInternal(Message.CmppSubmit message){    try    {        if(this.SubmitDispatched!=null)        {            this.SubmitDispatched(message);        }        else        {            Console.WriteLine("\n^^^^Throw " + message.ToString());        }    }    catch(Exception e)    {        Sinosky.Diagnostics.EventLog.WriteEntry(this,e);    }}private void SendCallback(System.IAsyncResult ar){    Message.CmppSubmit message = ar.AsyncState as Message.CmppSubmit;#if DEBUG    if(message!=null)    {        Console.WriteLine("\n<<<

 

 

Ⅱ.直接全部罗列要执行的方法到一个方法里(假设打包的方法为AXPatch),然后再用代理调用这个打包的方法【AXPatch()】.
通过事件处理的方法Ⅰ是异步进行的.不确定中......

 

经测试,方法Ⅰ是同步进行的,按照订阅事件的先后顺序执行.这个顺序不是随机的.

.NET框架中,C#语言使用委托以及事件,可以很好的实现观察者模式。委托相当于“订阅清单”的角色,当目标中关联了该委托的事件被触发时,则委托将自动按序执行观察者注册于委托中的方法。
方法Ⅱ通俗易懂.

 

 

参考文章

, 感觉写的不是很详细.

 

转载地址:http://cvlml.baihongyu.com/

你可能感兴趣的文章
Python 迭代器 & __iter__方法
查看>>
Machine Learning - XI. Machine Learning System Design机器学习系统的设计(Week 6)
查看>>
Fragment 和 FragmentActivity的使用
查看>>
matlab在图片上画框
查看>>
随着通信和编程,它是一门艺术系列6(技术的情况)
查看>>
executeBatch()相关操作汇总
查看>>
注册表-禁用与解开注册表5种方法
查看>>
spring.net aop 讲解
查看>>
java它们的定义jar套餐读Excel(这包括2003和2007)数据,和实例
查看>>
hdu 4493 Tutor
查看>>
LR破解版录制手机脚本
查看>>
理解javascript中的策略模式
查看>>
ECLIPSE实现了界面显示所有类
查看>>
Ubuntu logomaker sh: 1: pngtopnm: not found 解决方案
查看>>
sql 子查询stuff功能(同一个人的多任务,多领域成为字符串)
查看>>
iOS8新特性(2)——UIPopoverController和UIPresentationController
查看>>
你写的Try...Catch真的有必要么?
查看>>
4安德鲁斯.2.2在系统,具有系统权限的应用程序无法读取或写入SD卡
查看>>
CSS3布局之box-flex的使用
查看>>
CentOS 7系统挂载NTFS分区的移动硬盘(转载及体验 CentOS6.5系统挂载NTFS分区的移动硬盘)...
查看>>