[英]How to expose an event in a c# class?
我正在构建一个简单的类来容纳相关方法。 此代码的一部分包括同步到数据库。 内置的SyncOrchestrator
类包含一个SessionProgress事件处理程序,我可以将一个事件连接到该事件处理程序。
我想做的是实例化我的类,然后将一些代码连接到该事件,以便我可以显示进度条(不使用BGWorker)。
因此,我的问题可能是c#101,但是如何以正确的方式通过班级公开此事件,以便进行连接?
谢谢
我认为您正在寻找这样的东西:
public class SyncOrchestrator
{
// ...
public event EventHandler<MyEventArgs> SessionProgress;
protected virtual void OnSessionProgress(MyEventArgs e)
{
// Note the use of a temporary variable here to make the event raisin
// thread-safe; may or may not be necessary in your case.
var evt = this.SessionProgress;
if (evt != null)
evt (this, e);
}
// ...
}
MyEventArgs
类型是从EventArgs
基本类型派生的,其中包含您的进度信息。
您可以通过调用OnSessionProgress(...)
从类中引发事件。
通过执行以下操作,在任何使用者类中注册事件处理程序:
// myMethodDelegate can just be the name of a method of appropiate signature,
// since C# 2.0 does auto-conversion to the delegate.
foo.SessionProgress += myMethodDelegate;
同样,使用-=
取消注册该事件; 通常没有明确要求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.