Пример #1
0
        static void Main()
        {
            // Сконструировать три потока.
            MyThread mt1 = new MyThread("Поток #1");
            MyThread mt2 = new MyThread("Поток #2");
            MyThread mt3 = new MyThread("Поток #3");

            mt1.Thrd.Join();
            mt2.Thrd.Join();
            mt3.Thrd.Join();
        }
Пример #2
0
        static void Main()
        {
            TickTock tt  = new TickTock();
            MyThread mt1 = new MyThread("Tick", tt);
            MyThread mt2 = new MyThread("Tock", tt);

            mt1.Thrd.Join();
            mt2.Thrd.Join();

            Console.WriteLine("Часы остановлены");
        }
Пример #3
0
        static void Main()
        {
            MyThread mt1 = new MyThread("Мой Поток");

            Thread.Sleep(1000); // разрешить порожденному потоку начать свое выполнение

            Console.WriteLine("Прерывание потока.");
            mt1.Thrd.Abort(100);

            mt1.Thrd.Join(); // ожидать прерывание потока

            Console.WriteLine("Основной поток прерван.");
        }
Пример #4
0
        static void Main()
        {
            // Обратите внимание на то, что число повторений
            // передается этим двум объектам типа MyThread.
            MyThread mt  = new MyThread("Потомок #1", 5);
            MyThread mt2 = new MyThread("Потомок #2", 3);

            do
            {
                Thread.Sleep(100);
            } while (mt.Thrd.IsAlive || mt2.Thrd.IsAlive);

            Console.WriteLine("Основной поток завершен.");
        }
Пример #5
0
        static void Main()
        {
            Console.WriteLine("Основной поток начат.");

            // Сначала сконструировать объект типа MyThread.
            MyThread mt = new MyThread("Потомок #1");

            do
            {
                Console.Write(".");
                Thread.Sleep(100);
            } while (mt.Count != 10);

            Console.WriteLine("Основной поток завершен.");
        }
Пример #6
0
        static void Main()
        {
            Console.WriteLine("Основной поток начат.");

            // Сконструировать три потока.
            MyThread mt1 = new MyThread("Потомок #1");
            MyThread mt2 = new MyThread("Потомок #2");
            MyThread mt3 = new MyThread("Потомок #3");

            do
            {
                Console.Write(".");
                Thread.Sleep(100);
            } while (mt1.Count < 10 || mt2.Count < 10 || mt3.Count < 10);
            // Использовать свойство IsAlive для отслеживания момента окончания потоков.
            // while (mt1.Thrd.IsAlive && mt2.Thrd.IsAlive && mt3.Thrd.IsAlive);

            Console.WriteLine("Основной поток завершен.");
        }
Пример #7
0
        static void Main()
        {
            Console.WriteLine("Основной поток начат.");

            // Сконструировать три потока.
            MyThread mt1 = new MyThread("Потомок #1");
            MyThread mt2 = new MyThread("Потомок #2");
            MyThread mt3 = new MyThread("Потомок #3");

            mt1.Thrd.Join();
            Console.WriteLine("Потомок #1 присоединен.");

            mt2.Thrd.Join();
            Console.WriteLine("Потомок #2 присоединен.");

            mt3.Thrd.Join();
            Console.WriteLine("Потомок #3 присоединен.");

            Console.WriteLine("Основной поток завершен.");
        }
Пример #8
0
        static void Main()
        {
            Console.WriteLine("Основной поток начат.");

            // Сначала сконструировать объект типа MyThread.
            MyThread mt = new MyThread("Потомок #1");

            // Далее сконструировать поток из этого объекта.
            Thread newThrd = new Thread(mt.Run);

            // И наконец, начать выполнение потока.
            newThrd.Start();
            do
            {
                Console.Write(".");
                Thread.Sleep(100);
            } while (mt.Count != 10);

            Console.WriteLine("Основной поток завершен.");
        }
Пример #9
0
        static void Main()
        {
            ManualResetEvent evtObj = new ManualResetEvent(false);

            MyThread mt1 = new MyThread("Событийный Поток 1", evtObj);

            Console.WriteLine("Основной поток ожидает событие.");

            // Ожидать уведомления о событии.
            evtObj.WaitOne();

            Console.WriteLine("Основной поток получил уведомление о событии от первого потока.");

            // Установить событийный объект в исходное состояние.
            evtObj.Reset();

            mt1 = new MyThread("Событийный Поток 2", evtObj);

            // Ожидать уведомления о событии.
            evtObj.WaitOne();

            Console.WriteLine("Основной поток получил уведомление о событии от второго потока.");
        }