如何停止处理进一步的事件

发布于 2024-07-18 03:46:53 字数 363 浏览 3 评论 0原文

与 KeyPress 事件类似,我希望订阅该事件的任何人都能够在我的 EventArgs 类中设置 e.Handled。 如果它们返回 true,我不再想继续触发事件。 有什么想法如何实现这一点? 现在,这是我的方法:

protected void OnDataReceived(SocketAsyncEventArgs e)
{
    if (DataReceived != null)
    {                
        DataReceived(this, e);
    }
}

根据我的理解,订阅该事件的每个人都会收到通知,因此设置 e.Handled = true; 在这里不会有任何影响。

Similar to the KeyPress events, I want whoever is subscribed to the event to be able to set e.Handled in my EventArgs class. If they return true, I no longer want to continue firing events. Any ideas how to implement this? Right now, here is my method:

protected void OnDataReceived(SocketAsyncEventArgs e)
{
    if (DataReceived != null)
    {                
        DataReceived(this, e);
    }
}

From my understanding, everybody who is subscribed to the event will receive notification, so setting e.Handled = true; will have no effect here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苦妄 2024-07-25 03:46:53

使用 委托的解决方案的示例代码。获取调用列表

public class MyEventArgs : EventArgs
{
    public bool Handled { get; set; }
}

public class SomeClass
{
    public event EventHandler<MyEventArgs> SomeEvent;

    protected virtual void OnSomeEvent(MyEventArgs e)
    {
        var listeners = SomeEvent.GetInvocationList();
        foreach (var listener in listeners)
        {
            if (e.Handled) break;
            ((EventHandler<MyEventArgs>)listener).Invoke(this, e);
        }
    }
}

Sample code for a solution using Delegate.GetInvocationList:

public class MyEventArgs : EventArgs
{
    public bool Handled { get; set; }
}

public class SomeClass
{
    public event EventHandler<MyEventArgs> SomeEvent;

    protected virtual void OnSomeEvent(MyEventArgs e)
    {
        var listeners = SomeEvent.GetInvocationList();
        foreach (var listener in listeners)
        {
            if (e.Handled) break;
            ((EventHandler<MyEventArgs>)listener).Invoke(this, e);
        }
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文