我正在使用MSTest,我想知道Parallelize工作者是否具有唯一的ID,如果是这样,我如何获得这些ID?我假设1 worker = 1 thread
,但是Thread.CurrentThread.ManagedThreadID
并不是工作人员唯一的。我需要一种获取有关工人的唯一ID的方法。有人知道这是否可能吗?
这就是我的工作
[assembly: Parallelize(Workers =1, Scope = ExecutionScope.ClassLevel)]
我想说2个工人,有2个不同的班级。我想同时运行每个课程。
当我启动一个工作程序时,我在我的管理器中创建了一个新对象,请参见下面的ThreadManager
。但是,如您所见,我用来获取当前线程的方法不适用于1个以上的worker。
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;
}
}