c# - 多个线程使用相同的事件处理程序
问题描述
我有一个发布事件处理程序的类:
public class X
{
public event EventHandler<T> someEvent;
}
在构造函数上,我跨越了几个线程。如果出现某些情况,我会在所有这些线程上执行此事件:
someEvent?.Invoke(this, new T()); //T will eventually contain some output data
假设如果多个线程同时调用事件,只要附加的事件处理程序知道如何处理多线程问题,就应该没有问题?例如,如果附加事件使用某种锁定机制或某种并发集合来处理输出数据?还是应该以其他方式处理?
作为后续问题:我是否应该锁定班级对事件的访问权限:
lock(lockingObj)
{
someEvent?.Invoke(this, new T()); //T will eventually contain some output data
}
或者,如果附加的事件正确处理了这种情况,这不是必需的吗?(我猜如果三个线程同时触发事件,附加的代码也在不同的线程上运行三次)。
解决方案
推荐阅读
- ios - Swift UITest在tableviewcell中找不到collectionview
- ios - 如何从本地领域数据库恢复数据?
- angular - Center Mat-Menu,Center MatMenu Overlay to Button
- spring - Spring JPA - 修复两次刷新之间的排序集
- c# - 有没有办法使用 azure iot edge sdk 从 ModuleClient 获取设备孪生
- php - 将多维php数组转换为json数组
- .net - 无法使 .NET Core POST 请求正常工作
- android - 是否可以使用 java 1.8 构建 AOSP 棒棒糖?
- keras - keras 中这两个卷积层之间的区别在哪里?
- nginx - kubernetes nginx 入口并发连接