使用thread local storage可以将数据存储在线程的数据槽(data slot)中。数据只能被此线程访问。
 1 class Data
class Data
2 {
{
3 //Application data is stored here
  //Application data is stored here
4 }
}
5
6 Data appData = new Data();
Data appData = new Data();
7
8 Thread.SetData(Thread.GetNamedDataSlot("MyTestSlot"), appData);
Thread.SetData(Thread.GetNamedDataSlot("MyTestSlot"), appData);
9
10 Data tempData = (Data)Thread.GetData(Thread.GetNamedDataSlot("MyTestSlot"));
Data tempData = (Data)Thread.GetData(Thread.GetNamedDataSlot("MyTestSlot"));
11
12 Thread.FreeNamedDataSlot("MyTestSlot");
Thread.FreeNamedDataSlot("MyTestSlot");
13
 class Data
class Data2
 {
{3
 //Application data is stored here
  //Application data is stored here4
 }
}5

6
 Data appData = new Data();
Data appData = new Data();7

8
 Thread.SetData(Thread.GetNamedDataSlot("MyTestSlot"), appData);
Thread.SetData(Thread.GetNamedDataSlot("MyTestSlot"), appData);9

10
 Data tempData = (Data)Thread.GetData(Thread.GetNamedDataSlot("MyTestSlot"));
Data tempData = (Data)Thread.GetData(Thread.GetNamedDataSlot("MyTestSlot"));11

12
 Thread.FreeNamedDataSlot("MyTestSlot");
Thread.FreeNamedDataSlot("MyTestSlot");13

l   方法GetNamedDataSlot查找以"MyTestSlot"命名的数据槽(data slot),如果不存在,则返回一个新建立的slot。如果slot已经被创建则返回,并不会有错误代码或异常提醒此slot已被创建。使用方法AllocateNamedDataSlot可以创建一个以"MyTestSlot"命名的slot,如果此名称的slot已经创建则抛出ArgumentException异常。
注:需要注意的一点是GetNamedDataSlot和AllocateNamedDataSlot会在所有线程上建立指定名称的 slot。
l   方法SetData在当前线程的指定slot中存储数据。
public static void SetData (LocalDataStoreSlot slot,Object data)
l   方法GetData获得当前线程指定名称slot中的数据。
l   方法FreeNamedDataSlot会释放指定名称的slot,但是需要注意的是它会释放所有线程上指定名称的slot。解决的方法就是不要调用FreeNamedDataSlot方法,在线程结束后他所拥有的所有的data slot都回被自动释放。
 
                    
                
 


 
                
            
        
 浙公网安备 33010602011771号
浙公网安备 33010602011771号