gpt4 book ai didi

c# - 如何在 C# 类中公开事件?

转载 作者:太空宇宙 更新时间:2023-11-03 20:38:24 25 4
gpt4 key购买 nike

我正在构建一个简单的类来保存相关方法。此代码的一部分包括同步到数据库。内置的 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;

同理,使用-=注销事件;通常没有明确要求。

关于c# - 如何在 C# 类中公开事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4138372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com