1

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

谢谢。

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
        }
    }
}
4

1 回答 1

2

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

没有任何迹象表明attachments这里是线程安全的。如果其他线程可以访问这些实例,并更改这些对象中的属性,则可能会发生不好的事情。

一个简单的例子——如果实际的可枚举对象恰好是 a List<T>,并且另一个线程添加或删除了一个附件,foreach那么由于底层集合的变化,循环将在枚举时抛出......

于 2013-10-04T21:55:01.663 回答