Пауза в потоке - 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 ); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д