我正在构建一个简单的类来保存相关方法。此代码的一部分包括同步到数据库。内置的 SyncOrchestrator
类包括一个 SessionProgress 事件处理程序,我可以将事件连接到它。
我想做的是实例化我的类,然后将一些代码连接到此事件,以便我可以显示进度条(我将使用 BGWorker)。
所以,我的问题可能是 c# 101,但我如何通过我的类以正确的方式公开此事件,以便我可以将其连接起来?
谢谢
我认为您正在寻找这样的东西:
(我还建议您阅读 Events tutorial on MSDN。)
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;
同理,使用-=
注销事件;通常没有明确要求。
我是一名优秀的程序员,十分优秀!