此 c# 类/方法线程安全且并发访问是否安全
本文关键字:安全 并发 访问 是否 线程 方法 | 更新日期: 2023-09-27 18:34:09
在下面的代码中,附件对象是线程安全的吗?如果在应用程序运行多个线程时调用代码对附件对象进行更改,会发生什么情况?
谢谢。
public static class Util {
public static int AddMessage(string message, IEnumerable<FileAttachment> attachments, Dictionary<int, object> customFieldValues = null, int? assigneeUserId = null) {
foreach (FileAttachment current2 in attachments) {
//do something
}
}
}
在下面的代码中,附件对象是线程安全的吗?如果在应用程序运行多个线程时调用代码对附件对象进行更改,会发生什么情况?
没有任何迹象表明attachments
在这里是线程安全的。 如果其他线程可以访问这些实例,并更改这些对象中的属性,则可能会发生不好的事情。
一个简单的例子 - 如果实际的枚举恰好是一个List<T>
,并且另一个线程添加或删除附件,则由于底层集合更改,foreach
循环将在枚举时抛出......