Thread提供了API将数据保存到线程中,就像ASP.NET中每一个Thread都保存了一个Session一样。
通过Thread.GetData和SetData来读取或写入数据。示例代码如下:
Thread.SetData(Thread.GetNamedDataSlot("key"), data);
object data = Thread.GetData(Thread.GetNamedDataSlot("key"));
Thread.GetNamedDataSlot("key") 用来获取一个命名数据槽。如果是第一次调用这个方法,将会先创建这个命名槽。
使用上面的方法,每个线程都可以在数据槽中读写数据而不至于造成冲突。也就是说两个不同的线程读取到的内容是它们自己写入的内容。下面相关链接中的第二链接提到了可以释放命名数据槽,实际在使用时,无需释放,也不会造成内存泄露。
相关链接
http://msdn.microsoft.com/zh-cn/library/6sby1byh%28v=VS.90%29.aspx
http://hi.baidu.com/lhdisme/blog/item/69772bf841061c0ad9f9fde0.html