<PackageReference Include="NUnit" Version="3.0.0-beta-5" />

CountdownEvent

public class CountdownEvent
A simplified implementation of .NET 4 CountdownEvent for use in earlier versions of .NET. Only the methods used by NUnit are implemented.
using System.Threading; namespace NUnit.Framework.Internal.Execution { public class CountdownEvent { private int _initialCount; private int _remainingCount; private object _lock = new object(); private ManualResetEvent _event = new ManualResetEvent(false); public int InitialCount => _initialCount; public int CurrentCount => _remainingCount; public CountdownEvent(int initialCount) { _initialCount = (_remainingCount = initialCount); } public void Signal() { lock (_lock) { if (--_remainingCount == 0) _event.Set(); } } public void Wait() { _event.WaitOne(); } } }