Метод объединения потоков - PullRequest
       1

Метод объединения потоков

0 голосов
/ 07 сентября 2011
class Program
    {
        static void Main(string[] args)
        {
            ParameterizedThreadStart aStart = new ParameterizedThreadStart(Addition);
            Thread aThread = new Thread(aStart);
            Data aData = new Data();
            aData.X = 10;
            aData.Y = 20;

        aThread.Start(aData);
        aThread.Join();
        Console.WriteLine("End of the program");
    }


    static void Addition(object data)
    {
        var a = data as Data;
        var b = a.X + a.Y;
        a.result = b;

        Console.WriteLine(a.result);
        Thread.Sleep(1000);
        Console.WriteLine("End of thread");

    }
}  

Я написал пример, чтобы понять метод Join ();Может ли тело объяснить, как это работает?и в чем разница между сном и join ()

Ответы [ 3 ]

1 голос
/ 07 сентября 2011
  • Thread.Sleep

    Блокирует текущий поток на указанное количество миллисекунд.

    Thread.Join

    Блокирует вызывающий поток, пока поток не завершится (вы не знаете, как долго)

Обратите внимание, что метод Thread.Join () блокирует только вызывающий поток ( обычно основной поток выполнения приложения ), пока ваш объект потока не завершится. Вы можете по-прежнему выполнять другие потоки в фоновом режиме, ожидая завершения выполнения определенного потока.

http://msdn.microsoft.com/en-us/library/system.threading.thread.join.aspx

0 голосов
/ 04 марта 2016

Это приводит к тому, что текущий запущенный поток останавливает выполнение до того момента, когда поток, к которому он присоединяется, останавливает выполнение. Т.е. метод присоединения ожидает завершения потока.

0 голосов
/ 07 сентября 2011

Join ждет, пока поток, который вы вызвали, остановится. Sleep спит в течение заданного периода времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...