簡體   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