如何为每个线程创建一个List <string> {get; set;},</string>

时间:2012-04-08 00:55:38

标签: c#

我有一个需要动态设置List的类。我还使用线程将这个类称为10个左右。

public static List<string> MyList {get;set;}

然而,我是线程新手,因为我被告知这是不安全的。我的问题是如何为每个线程创建一个MyList的实例?

一个例子真棒!

1 个答案:

答案 0 :(得分:8)

使用ThreadStatic属性。

[ThreadStatic] private static List<string> _myList;

public static List<string> MyList {
  get { return _myList; }
  set { _myList = value; }
}

此外,通常情况下,包含类可以控制集合;这意味着没有外部可见的setter和一个返回复制或只读集合的​​getter。

但是,这可能没有您想要的效果。每个线程都有自己的集合副本。也许你需要的是看看 lock 或重新考虑你的设计。