using System.Collections;
using System.Collections.Concurrent;
using System.Threading.Tasks;
using System.IdentityModel.Tokens.Jwt;
using Microsoft.IdentityModel.Logging;
public static void Main()
var oneTasks = Enumerable.Range(0,10).Select(x=> Task.Run(()=>new OneClass().Send())).ToArray();
var secondTasks = Enumerable.Range(0,10).Select(x=> Task.Run(()=>new SecondClass().Send())).ToArray();
private static ConcurrentDictionary<string, string> _tokens = new System.Collections.Concurrent.ConcurrentDictionary<string, string>();
Console.WriteLine(this.GetType().Name + "-" + token);
private string GetToken()
if (_tokens.TryGetValue(this.GetType().Name, out token))
token = this.GetType().Name + new Random().Next(100);
public class OneClass: BaseClass{}
public class SecondClass:BaseClass{}