123456789101112131415161718 |
- using System.Collections.Concurrent;
- using System.Threading;
- namespace Masuit.Tools.NoSQL.MongoDBClient.Core
- {
- /// <summary>
- /// 取线程内唯一对象
- /// </summary>
- /// <typeparam name="T"></typeparam>
- static class CallContext<T>
- {
- static ConcurrentDictionary<string, AsyncLocal<T>> state = new ConcurrentDictionary<string, AsyncLocal<T>>();
- public static void SetData(string name, T data) => state.GetOrAdd(name, _ => new AsyncLocal<T>()).Value = data;
- public static T GetData(string name) => state.TryGetValue(name, out AsyncLocal<T> data) ? data.Value : default(T);
- }
- }
|