如何制作具有连续id的线程

mhs*_*mhs 5 c# multithreading

当我创建它们时,我需要为某些线程分配连续的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

Mon*_*ild 5

由于您使用数组来包含线程,因此该数组的每个顺序分配的元素都将具有顺序索引.

但是,如果需要将线程ID映射到元素中MyThreadArray,因为ID在创建线程时(仅线程Name)无法控制线程,可以使用a Dictionary<int, int>将实际线程映射IDMyThreadArray索引

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匹配的线程的元素的索引,方式大致相同.