CountdownEvent
CountdownEvent(2): CurrentCount сначала 2. Два Signal делают IsSet и Wait(0) возвращает true. Лишний Signal бросает InvalidOperationException.
Синтаксис
var cd = new CountdownEvent(2);
Пример
Давайте два раза вызовем Signal:
using System;
using System.Threading;
class Program
{
static void Main()
{
var cd = new CountdownEvent(2);
Console.WriteLine(cd.CurrentCount);
cd.Signal();
Console.WriteLine(cd.CurrentCount);
cd.Signal();
Console.WriteLine(cd.IsSet);
Console.WriteLine(cd.Wait(0));
}
}
Результат выполнения кода:
2
1
True
True
Пример
Давайте вызовем лишний Signal:
using System;
using System.Threading;
class Program
{
static void Main()
{
var cd = new CountdownEvent(1);
cd.Signal();
try
{
cd.Signal();
Console.WriteLine("ok");
}
catch (InvalidOperationException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
"fail"
Смотрите также
-
ManualResetEventSlim,
ManualResetEventSlim -
AutoResetEvent,
AutoResetEvent -
SemaphoreSlim,
SemaphoreSlim -
PulseAll,
PulseAll