using System.Collections.Concurrent; using System.Threading; namespace Masuit.Tools.Core.Net { /// /// 取线程内唯一对象 /// /// public static class CallContext { static ConcurrentDictionary> state = new ConcurrentDictionary>(); /// /// 设置值 /// /// /// public static void SetData(string name, T data) => state.GetOrAdd(name, _ => new AsyncLocal()).Value = data; /// /// 获取值 /// /// /// public static T GetData(string name) => state.TryGetValue(name, out AsyncLocal data) ? data.Value : default(T); } }