4
在.net 4.0之前,我使用System.Threading.Thread中的命名數據插槽實現了一個解決方案。現在,在.net 4.0中,有了ThreadLocal的概念。 ThreadLocal用法如何與指定的數據插槽進行比較? ThreadLocal值是否被子線程繼承? ThreadLocal是使用命名數據插槽的簡化版本嗎?下面是使用命名數據插槽的一些例子。這可以通過使用ThreadLocal來簡化,它是否會保留與指定數據插槽相同的屬性?什麼時候應該使用ThreadLocal而不是Thread.SetData/Thread.GetData?
public static void SetSliceName(string slice)
{
System.Threading.Thread.SetData(System.Threading.Thread.GetNamedDataSlot(SliceVariable), slice);
}
public static string GetSliceName(bool errorIfNotFound)
{
var slice = System.Threading.Thread.GetData(System.Threading.Thread.GetNamedDataSlot(SliceVariable)) as string;
if (errorIfNotFound && string.IsNullOrEmpty(slice)) {throw new ConfigurationErrorsException("Server slice name not configured.");}
return slice;
}