Я работаю с MSTest, и мне было интересно, есть ли у сотрудников Parallelize уникальный идентификатор, и если да, как я могу получить эти идентификаторы? Я предположил 1 worker = 1 thread
, однако Thread.CurrentThread.ManagedThreadID
не является уникальным для работника. Мне нужен способ получить уникальный идентификатор работника, о котором идет речь. Кто-нибудь знает, возможно ли это?
Это то, с чем я работаю
[assembly: Parallelize(Workers =1, Scope = ExecutionScope.ClassLevel)]
Я хочу сказать, 2 работника, и у меня есть 2 разных класса. Каждый класс я хочу проводить одновременно.
Когда я запускаю работника, я создаю новый объект в моем менеджере, см. ThreadManager
ниже. Однако, как вы можете видеть, метод, который я использую для получения текущего потока, не будет применяться к более чем одному работнику.
public static class ThreadManager
{
public static IConfiguration Configuration { get; set; }
private static Dictionary<int, ThreadObject> threadDictionary;
static ThreadManager()
=> threadDictionary = new Dictionary<int, ThreadObject>();
public static void AddThread()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("AppSettings.json");
Configuration = builder.Build();
threadDictionary.Add(Thread.CurrentThread.ManagedThreadId, new ThreadObject());
}
public static void RemoveThread()
=> threadDictionary.Remove(Thread.CurrentThread.ManagedThreadId);
public static ThreadObject GetThread()
{
ThreadObject _thread = null;
threadDictionary.TryGetValue(Thread.CurrentThread.ManagedThreadId, out _thread);
return _thread;
}
}