Пауза в потоке - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, у меня есть два потока, мне нужно чтобы до какого-то момента они работали вместе, потом один из них поставил другой на паузу, выполнил часть кода и потом они опять работали вместе. Пробовал Suspend и Resume, но компилятор жалуется что они старые. Посмотрел на MSDN, но там в основном говорится о синхронизации доступа к общим данным, а как просто вызвать паузу у другого потока я не нашел(может просто не понял, там уж очень мудрено написано). Кто нибудь может объяснить как вызвать паузу в другом потоке без лишних наворотов?

Решение задачи: «Пауза в потоке»

textual
Листинг программы
using System;
using System.Threading;
 
namespace ConsoleApplication25
{
    class Program
    {
        static ManualResetEvent _event;
 
        static void
        Main ( string[] args ) {
            _event = new ManualResetEvent( true );
            new Thread( Thread0 ).Start();
            new Thread( Thread1 ).Start();
            Console.ReadKey();
        }
 
        static void Thread0 ( ) {
            for ( int i = 0; i < 100; ++i ) {
                Console.WriteLine( "Thread0: " + i );
                // Какое-то условие, при выполнении которого
                // второй поток будет приостанавливаться
                if ( i % 10 == 0 ) {
                    _event.Reset(); // Приостановка Thread1...
                    {
                        // Здесь код, который будет выполнятся
                        // когда Thread1 приостановлен
                        // Thread.Sleep для эмуляции работы
                        Thread.Sleep( 1000 );
                    }
                    _event.Set(); // Продолжение выполнения Thread1...
                }
            }
        }
 
        static void Thread1 ( ) {
            for ( int i = 0; i < 1000; ++i ) {
                _event.WaitOne();
                // Какая-то работа...
                Console.WriteLine( "\tThread1: " + i );
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5