如何在线程中同步2个进程以便它们一起运行?

Ree*_*Ree 3 c# multithreading synchronization .net-3.5

我目前有这个代码(感谢此处的帮助).我需要创建第一个ProcessMessage作为线程并ProcessMessage同步运行第二个(在当前线程上),然后在单个线程上执行Join.否则,我将有三个线程有效地做两件事.如何修改它来完成它?我在.NET 3.5上

Thread thRegion1 = new Thread(() =>
{
    if (Region1.Trim().Length > 0)
    {
        returnMessage = ProcessTheMessage(string.Format(queueName, Region1));
        Logger.Log(returnMessage);
    }
});

Thread thRegion2 = new Thread(() =>
 {
     if (Region2.Trim().Length > 0)
     {
         returnMessage = ProcessTheMessage(string.Format(queueName, Region2));
         Logger.Log(returnMessage);
     }
 });

thRegion1.Start();
thRegion2.Start();

thRegion1.Join();
thRegion2.Join();
Run Code Online (Sandbox Code Playgroud)

Dan*_*rth 6

你可以这样做:

Thread thRegion1 = new Thread(() =>
        {
            if (shawRegion1.Trim().Length > 0)
            {
                returnMessage = ProcessMessage(string.Format(queueName, 
                                                             shawRegion1));
                Logger.Log(returnMessage);
            }
        });

thRegion1.Start();

if (shawRegion2.Trim().Length > 0)
{
    returnMessage = ProcessMessage(string.Format(queueName, shawRegion2));
    Logger.Log(returnMessage);
}

thRegion1.Join();
Run Code Online (Sandbox Code Playgroud)

这将启动thRegion1线程并执行当前线程中的其他工作.这项工作完成后,它会调用JointhRegion1,这将立即返回,如果thRegion1已经在其工作结束.