C#:如果从多个线程调用静态方法怎么办?

在我的应用程序中,我有一个静态方法,同时从多个线程调用。有没有我的数据混淆的危险?

在我的第一次尝试中,该方法不是静态的,我正在创建该类的多个实例。在这种情况下,我的数据混淆了某种程度。我不知道这是怎么发生的,因为它只发生有时。我还在调试。
但现在的方法是静态的,我到目前为止没有问题。也许这只是运气。我不知道肯定。

方法中声明的变量(可能的例外是“捕获的”变量)是孤立的,所以你不会有任何固有的问题;然而,如果你的静态方法访问任何共享状态,所有注单都关闭。

共享状态的示例是:

>静态字段
>从公共缓存访问的对象(非序列化)
>通过输入参数(以及这些对象上的状态)获得的数据,如果多个线程可能触及相同的对象,

如果您具有共享状态,则必须:

>注意不要突变状态一旦它可以共享(更好:使用不可变对象来表示状态,并拍摄状态的快照到一个局部变量 – 即,而不是引用whatever.SomeData反复,你读任何.SomeData一次变成局部变量,然后只使用变量 – 注意这只对不可变状态有帮助!)
>同步对数据的访问(所有线程必须同步) – 互斥或(更细粒度)读取器/写入器

http://stackoverflow.com/questions/3037637/c-sharp-what-if-a-static-method-is-called-from-multiple-threads

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:C#:如果从多个线程调用静态方法怎么办?