gpt4 book ai didi

c# - 我怎样才能停止处理进一步的事件

转载 作者:太空宇宙 更新时间:2023-11-03 22:27:32 26 4
gpt4 key购买 nike

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

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

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

最佳答案

使用 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);
}
}
}

关于c# - 我怎样才能停止处理进一步的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/765019/

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