Events 委托和事件,调用关联的方法
我有一位代表Events 委托和事件,调用关联的方法,events,c#-4.0,delegates,Events,C# 4.0,Delegates,我有一位代表 public delegate bool Controller_PDF_FileDone(object sender, ControllerTaskEventArgs e); 和一个事件 public event Controller_PDF_FileDone On_Controller_PDF_FileDone; 我需要使用此“事件”来调用该方法,请让我知道如何调用 提前感谢调用事件(来自声明该事件的同一类): 订阅事件(来自声明该事件的同一类): 在注册到事件的类中,
public delegate bool Controller_PDF_FileDone(object sender,
ControllerTaskEventArgs e);
和一个事件
public event Controller_PDF_FileDone On_Controller_PDF_FileDone;
我需要使用此“事件”来调用该方法,请让我知道如何调用
提前感谢调用事件(来自声明该事件的同一类):
订阅事件(来自声明该事件的同一类):
在注册到事件的类中,您需要创建一个函数-此函数签名/参数必须与您的委托类似,这意味着创建一个返回bool并接受对象发送者、控制器taskeventargs e作为参数的函数。然后向该委托注册事件(您刚刚创建的函数)。当触发此事件时,它将调用您的委托人将事件视为指向函数的指针列表,并且所有函数都必须作为委托签名(相同的返回类型/参数)。触发事件时,将调用所有委托并接收相同的参数。除非您有充分的理由不这样做,否则您可能应该首先在变量中捕获事件,并在比较和调用中使用该变量(
var e=On_Controller\u PDF\u FileDone;if(e!=null)e.Invoke(…);
)。除非另有明确说明,否则通常可以订阅或取消订阅线程中的事件,因此On_Controller\u PDF\u FileDone
上的可能会在比较null
和调用
@hvd之间发生变化,您是对的。这是一个众所周知的最佳实践,在var中设置处理程序,然后检查是否为null。编辑以鼓励“最佳做法”。
var e = On_Controller_PDF_FileDone;
if (e != null) {
e.Invoke(this, new ControllerTaskEventArgs());
}
On_Controller_PDF_FileDone += new Controller_PDF_FileDone(
YourHandlingMethod_On_Controller_PDF_FileDone);