Как мне синхронизировать 2 процесса в потоках, чтобы они работали вместе? - PullRequest
3 голосов
/ 19 августа 2011

У меня сейчас есть этот код (спасибо за помощь отсюда).Мне нужно создать первое ProcessMessage как поток и запустить второй ProcessMessage синхронно (в текущем потоке), а затем выполнить соединение в одном потокеВ противном случае у меня будет три потока, эффективно выполняющих две вещи.Как я могу изменить это, чтобы выполнить это?Я нахожусь на .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();

1 Ответ

6 голосов
/ 19 августа 2011

Вы можете сделать это следующим образом:

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();

Это запускает поток thRegion1 и выполняет другую часть работы в текущем потоке.После того, как эта работа закончена, он вызывает Join на thRegion1, который немедленно вернется, если thRegion1 уже завершил свою работу.

...