Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个c#类/方法是线程安全和并发访问安全的吗?_C#_Class_Methods_Static_Thread Safety - Fatal编程技术网

这个c#类/方法是线程安全和并发访问安全的吗?

这个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

在下面的代码中,附件对象是线程安全的吗?如果调用代码在应用程序运行多个线程时对attachments对象进行更改,会发生什么情况

谢谢

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无法通过发布的代码知道这是否是线程安全的,但如果您使用的是共享/静态数据,它很可能不是线程安全的。