C#之多线程中线程作用域变量

264 阅读1分钟

1. ThreadStaticAttribute

只能用在静态变量中

[ThreadStatic]
private static string Data = string.Empty;

Data = "kun";

2. LocalDataStoreSlot 变量

一个slot中只有一个object

1) NamedDataSlot

需要手动释放

LocalDataStoreSlot slot = Thread.AllocateNamedDataSlot("name");
//set data
Thread.SetData(this.slot,"kun");
  //get slot
var localSlot =  Thread.GetNamedDataSlot("name");
//get data
 var data = Thread.GetData(slot);

Thread.FreeNamedDataSlot("");

# 2) DataSlot

不需要释放 ··· LocalDataStoreSlot slot = Thread.AllocateDataSlot(); Thread.SetData(this.slot, "kun1"); var res = Thread.GetData(this.slot); ···

3. ThreadLocal 变量

用法最简单,.net 4.0以后可以用 ··· ThreadLocal data = new ThreadLocal(() => { return 1; }); this.data.Value = 5;

data.Dispose(); ···