这个c#类/方法是线程安全和并发访问安全的吗?
在下面的代码中,附件对象是线程安全的吗?如果调用代码在应用程序运行多个线程时对attachments对象进行更改,会发生什么情况 谢谢这个c#类/方法是线程安全和并发访问安全的吗?,c#,class,methods,static,thread-safety,C#,Class,Methods,Static,Thread Safety,在下面的代码中,附件对象是线程安全的吗?如果调用代码在应用程序运行多个线程时对attachments对象进行更改,会发生什么情况 谢谢 public static class Util { public static int AddMessage(string message, IEnumerable<FileAttachment> attachments, Dictionary<int, object> customFieldValues = null, int
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
}
}
}
公共静态类Util{
公共静态int AddMessage(字符串消息、IEnumerable附件、字典customFieldValues=null、int?assigneeUserId=null){
foreach(附件中的文件附件current2){
//做点什么
}
}
}
在下面的代码中,附件对象是线程安全的吗?如果调用代码在应用程序运行多个线程时对attachments对象进行更改,会发生什么情况
这里没有任何迹象表明附件
是线程安全的。如果其他线程可以访问这些实例,并更改这些对象中的属性,那么可能会发生不好的事情
一个简单的例子-如果实际的可枚举项恰好是一个
列表
,而另一个线程添加或删除了一个附件,那么foreach
循环将在枚举时抛出,因为基础集合正在更改…谢谢。如果这段代码放在IIs下托管的网站上,多个用户同时访问同一页面(我指的是同一代码),会发生什么?此并发访问在IIs下托管的网站上是否安全?@stacker如果您使用ASP.NET,请注意工作进程可以随时循环,导致内存中的数据丢失而不发出警告。@stacker无法通过发布的代码知道这是否是线程安全的,但如果您使用的是共享/静态数据,它很可能不是线程安全的。