数据槽的一个典型应用就是Thread.CurrentXXX,CurrentXXX是一个静态属性,但在任务线程中的Thread.CurrentXXX调用都会得到与这个线程相关的数据
也就是说数据槽可以实现在静态字段中存储线程相关信息而不会互相覆盖的功能,示例代码如下:
class Program { static void Main(string[] args) { Console.WriteLine(ThreadHelp.CurrentThreadId); new Thread(TProc).Start(); Console.ReadLine(); } static void TProc() { Console.WriteLine(ThreadHelp.CurrentThreadId); } } class ThreadHelp { static private LocalDataStoreSlot slot = Thread.AllocateDataSlot(); static public string CurrentThreadId { get { if (Thread.GetData(slot) == null) Thread.SetData(slot, Thread.CurrentThread.ManagedThreadId.ToString()); return (string)Thread.GetData(slot); } } }