none
c#事件怎么判断同样的方法只能注册一次 RRS feed

  • 问题

  • c#事件怎么判断同样的方法只能注册一次,或者只调用其中的一个方法

    please verify my account


    • 已编辑 lctk 2017年4月17日 10:26
    2017年4月17日 10:24

全部回复

  • 看.NET框架程序设计中的事件一节,当委托链中有多于一个方法时,直接返回即可。需要操作Delegate类

    参考下这里

    https://msdn.microsoft.com/en-us/library/orm-9780596516109-03-09.aspx?f=255&MSPPError=-2147217396


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    • 已建议为答案 zjyh16 2017年4月18日 1:02
    2017年4月17日 10:30
  • 啥意思,不明白

    please verify my account

    2017年4月17日 10:32
  • 已解决,想删除又删不了

    please verify my account

    2017年4月17日 11:23
  • Hi lctk,

    感谢你在MSDN论坛发帖。

    既然你的问题已经被解决,请标记有用的回复作为答案,这样会帮助其他社区成员。

    对于这种问题我一般是改写+=,只需要委托添加一个函数。再添加直接return。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年4月18日 7:05
    版主
  • 你说的啥意思,来点代码

    please verify my account

    2017年4月18日 7:22
  • Hi,

    可以看一下下面的代码:

            public delegate void CarEngineHandler(string msgForCaller);
            private CarEngineHandler listOfHandlers;
            
            public void RegisterWithCarEngine(CarEngineHandler methodToCall)
            { 
                 if(listOfHandlers ==NULL)
                      listOfHandlers += methodToCall; 
                 else
                 return;
             }

    这样就可以保证,执行一个了. 不知道是不是你想要的。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年4月19日 2:52
    版主
  • 我的+=不是在声明委托的页面写的,没法判断是否为null

    please verify my account

    2017年4月19日 5:44
  • Hi,

    你在使用委托的时候,也是需要判断委托是不是为空,不然有可能委托是空,你还用,就会导致错误。

    再添加,使用的时候,我觉得应该是可以判断的。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年4月19日 6:25
    版主