有人能告诉我,我提到的例子是否是回调机制的例子吗?

本文关键字:是否是 机制 回调 告诉我 | 更新日期: 2023-09-27 17:54:58

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()
     {
     }
}
    上面的例子是否代表了在。net中实现回调机制的一种方式?
  1. 或者我需要使用BeginInvoke和endInvoke回调机制?

有人能告诉我,我提到的例子是否是回调机制的例子吗?

    是的,这是一种方法。无论如何,我将检查这个:if (cllBack != null) cllBack();
  1. 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;
   }
}

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

hth

马里奥

PS:小心,你的b是本地的

相关文章: