Описание: класс
AutoResetEvent является оберткой над объектом ОС Windows "событие" и позволяет переключить данный объект-событие из сигнального в несигнальное состояние.
Метод
WaitOne() переводит объект в несигнальное состояние.
Метод
Set() переводит объект в сигнальное состояние.
C#
AutoResetEvent myEvent = new AutoResetEvent(true);
// Передавая в конструктор значение true, мы тем самым указываем, что создаваемый объект изначально будет в сигнальном состоянии.
...
myEvent.WaitOne();
...
myEvent.Set();
Пример
C#
class Program
{
static int x = 0;
// переменную будем использовать для синхронизаци
static AutoResetEvent myEvent = new AutoResetEvent(true);
// главный метод программы
static void Main(string[] args)
{
// создаем потоки
for (int i = 0; i < 5; i++)
{
Thread myThread = new Thread(Count);
myThread.Name = "Поток " + i.ToString();
myThread.Start();
}
}
// поток
public static void Count()
{
myEvent.WaitOne();
x = 1;
for (int i = 1; i < 9; i++)
{
Console.WriteLine("{0}: {1}", Thread.CurrentThread.Name, x);
x++;
Thread.Sleep(100);
}
myEvent.Set();
}
}
На заметку! Передавая в конструктор значение
true, мы тем самым указываем, что создаваемый объект изначально будет в сигнальном состоянии.
static
AutoResetEvent myEvent = new
AutoResetEvent(
true);