当我创建它们时,我需要为某些线程分配连续的ID,并且无论起始id是什么(如11,12,13,...或9,10,11)
这就是我所做的,这里我创建4个线程并调用My_function()
for ( byte i = 0 ; i < 4 ; i++ )
{
myThreadArray[i] = new Thread(new ParameterizedThreadStart(My_function));
myThreadArray[i].Start(i);
}
Run Code Online (Sandbox Code Playgroud)
它似乎工作,但我可以保证,我总是为他们分配连续的ID
由于您使用数组来包含线程,因此该数组的每个顺序分配的元素都将具有顺序索引.
但是,如果需要将线程ID映射到元素中MyThreadArray,因为ID在创建线程时(仅线程Name)无法控制线程,可以使用a Dictionary<int, int>将实际线程映射ID到MyThreadArray索引
for ( byte i = 0 ; i < 4 ; i++ )
{
myThreadArray[i] = new Thread(new ParameterizedThreadStart(My_function));
myThreadArray[i].Start(i);
MyThreadDictionary.Add(MyThreadArray[i].ManagedThreadId(), i)
}
Run Code Online (Sandbox Code Playgroud)
并通过以下方式访问:
logSet[MyThreadDictionary(System.Threading.Thread.CurrentThread.ManagedThreadId)]
Run Code Online (Sandbox Code Playgroud)
或者用于Array.FindIndex检索MyThreadArray包含与您要匹配的线程ID匹配的线程的元素的索引,方式大致相同.