繁体   English   中英

谁能告诉我我提到的示例是否是回调机制的示例?

[英]Can any one tell me if the example I have mentioned is an example of a callback mechanism

class B
{
     public delegate void CallBack();
     public event CallBacl cllBack;

     void Publish()
     {
       cllBack();
     }
}

class A
{
     B b = new B();
     b.cllBack += new CallBack(test_this)

     public void test_this()
     {

     }
}
  1. 上面的示例是否表示一种在.net中实现回调机制的方法?
  2. 否则我需要使用BeginInvoke和endInvoke作为回调机制吗?
  1. 是的,这是一种方法。 无论如何,我都会检查一下: if (cllBack != null) cllBack();
  2. BeginInvoke( 在此处查看 )用于异步操作; 您使用的方法是同步方法。

实现回调机制的方法有很多,使用委托确实是其中一种。

对信息begininvoke等,也看到一种替代。

一个警告,它让我有些痛苦:

b.cllBack += new CallBack(test_this)

当然,在a中添加了对b的引用,因此,即使您不再在其他任何地方使用b了,b仍然会被引用,并且不会被垃圾回收。

我认为这是一种更整洁的方法:

class A
{
    private delegate B.CallBack myCallBack;
    private B b = new B();

    public A
    {
       myCallBack = new B.CallBack( test_this );
       b.cllBack += myCallBack;
    }


   public void Close()
   {
     c.cllBack -= myCallBack;
   }
}

简而言之,您在需要回调时注册,而在不再需要回调时注销。

心连心

马里奥

PS:请注意,您的b是ctor的本地对象

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM