gpt4 book ai didi

c# - c# 事件是串行处理还是并行处理?

转载 作者:太空狗 更新时间:2023-10-30 01:04:15 26 4
gpt4 key购买 nike

例如,我有一个触发事件的类,该事件有 1000 个订阅者。是否使用单个线程逐个触发每个订阅者委托(delegate)?还是 .Net 使用线程池并行处理部分或所有订阅?

最佳答案

正如 Tigran 所说,事件调用是串行的。如果其中一个订阅者在某个时候抛出异常,则其他订阅者将不会被触发。

并行触发事件的最简单方法是

    public event Action Event;

public void Trigger()
{
if (Event != null)
{
var delegates = Event.GetInvocationList();
Parallel.ForEach(delegates, d => d.DynamicInvoke());
}
}

如果出现异常,此实现将遇到同样的问题。

关于c# - c# 事件是串行处理还是并行处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24257024/

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