public static void Clear(string dbType, string connectionString) { DataClient client = null; ConcurrentBag <DataClient> clientBag = null; var key = $"{dbType}{connectionString}"; while (dicConnectionStringClient.TryRemove(key, out clientBag)) { while (clientBag.TryTake(out client)) { client.Dispose(); } clientBag = null; } }
public static void ClearAll() { DataClient client = null; ConcurrentBag <DataClient> clientBag = null; foreach (var kv in dicConnectionStringClient) { client = null; clientBag = kv.Value; while (clientBag.TryTake(out client)) { client.Dispose(); } } client = null; clientBag = null; dicConnectionStringClient.Clear(); }
public static void Push(DataClient client) { ConcurrentBag <DataClient> clientBag = null; var key = $"{client.DbType}{client.ConnectionString}"; if (dicConnectionStringClient.TryGetValue(key, out clientBag)) { if (clientBag.Count < MaxCount) { clientBag.Add(client); } else { client.Dispose(); } } else { dicConnectionStringClient.TryAdd(key, new ConcurrentBag <DataClient>()); Push(client); } }