有人能告诉我,我提到的例子是否是回调机制的例子吗?
本文关键字:是否是 机制 回调 告诉我 | 更新日期: 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中实现回调机制的一种方式?
- 或者我需要使用BeginInvoke和endInvoke回调机制?
- 是的,这是一种方法。无论如何,我将检查这个:
- BeginInvoke(看这里)用于异步操作;你正在使用的方法是同步的。
if (cllBack != null) cllBack();
有许多实现回调机制的方法,使用委托确实是其中之一。
查看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是本地的