C#Threadpool多线程如何同步

测试流程需要创建两个线程,两个线程的测试流程不一致,如何实现不同线程之间的同步与等待

protected void Listener(object obj)
{
do
{
{
for (int i = 0; i < TotalDut; i++)
{
int iDut = i;
AddinDB addins = m_ListAddinDB[iDut];

                    string DutStat = addins.Itfs.UI.GetDutStatus(iDut);
                    if (lastStat[iDut].Equals(DutStat))
                    {
                        continue;
                    }

                    lastStat[iDut] = DutStat;
                    switch (DutStat)
                    {
                        case "START":
                            ThreadPool.QueueUserWorkItem(ActionStart, iDut);
                            break;

                        case "INIT":
                            ThreadPool.QueueUserWorkItem(ActionInit, iDut);
                            break;

                        default:
                            break;
                    }
                }
            }               
            Thread.Sleep(500);
        } while (true);
    }
    
    

protected void ActionStart(object _iDut)
{
int iDut = (int)_iDut;

        bool bTestRes = gTest.Run(iDut);
        
    }
    

public bool Run(int nIndex)
{
if (nIndex == 1)
{
Result = TestListRun_1(testList);
}
else if (nIndex == 0)
{
Result = TestListRun_0(testList);
}

        return Result == (int)TEST_STAT.SUC;
    }
尝试过用Waitone()和Set()的方法,但是并不奏效 ,1号线程执行了Set之后,0号线程还是在wait状态
目标效果就是可以在 TestListRun_1和TestListRun_0之间通过加锁的方式实现同步或者等待

lock