Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.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#_Asp.net Mvc_Controller_Static_Thread Safety - Fatal编程技术网

C# 同一线程中类的所有实例之间的类的共享数据成员

C# 同一线程中类的所有实例之间的类的共享数据成员,c#,asp.net-mvc,controller,static,thread-safety,C#,Asp.net Mvc,Controller,Static,Thread Safety,在我的C#MVC项目中,我在一个类中有一个静态成员,该类由同一个类的另一个实例更新。但问题是,拥有此类实例的所有线程也在使用相同的内存来更新静态变量。但是我不希望在线程之间共享变量 是否有任何方法可以使同一线程中的类的所有实例共享该类的数据成员,但如果在不同的线程中,则创建一个新的内存位置?这可能适合您的需要,也可能不适合您的需要,但有一种方法可以潜在地解决这一问题,即使用线程静态字段 指示静态字段的值对于每个线程都是唯一的 标记为ThreadStaticAttribute的静态字段不在之间共

在我的
C#
MVC项目中,我在一个类中有一个静态成员,该类由同一个类的另一个实例更新。但问题是,拥有此类实例的所有线程也在使用相同的内存来更新静态变量。但是我不希望在线程之间共享变量


是否有任何方法可以使同一线程中的类的所有实例共享该类的数据成员,但如果在不同的线程中,则创建一个新的内存位置?

这可能适合您的需要,也可能不适合您的需要,但有一种方法可以潜在地解决这一问题,即使用线程静态字段

指示静态字段的值对于每个线程都是唯一的

标记为ThreadStaticAttribute的静态字段不在之间共享 线程。每个执行线程都有一个单独的字段实例, 并独立设置和获取该字段的值。如果该字段是 在不同的线程上访问,它将包含不同的值

注意除了对字段应用
ThreadStaticAttribute
属性外,还必须将其定义为
static

public class Example
{
   [ThreadStatic] static double previous = 0.0;
   [ThreadStatic] static double sum = 0.0;
   [ThreadStatic] static int calls = 0;
   [ThreadStatic] static bool abnormal;
   ...