Пауза в потоке - 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 );
}
}
}
}