public void Dispose() { if (_enteredSemaphore) { _semaphoreSlimSignalable.Release(); } }
public async Task SemaphoreSlimSignalable_wait_should_enter( [Values(true, false)] bool async, [Values(true, false)] bool isSignaledWait, [Values(0, 1, 2)] int initialCount, [Values(2, 4)] int threadsCount) { var semaphore = new SemaphoreSlimSignalable(initialCount); var resultsTask = WaitAsync(semaphore, async, isSignaledWait, threadsCount, Timeout.InfiniteTimeSpan); for (int i = 0; i < threadsCount - initialCount; i++) { semaphore.Release(); } var results = await resultsTask; Assert(results, SemaphoreSlimSignalable.SemaphoreWaitResult.Entered); }
public async Task Reset_should_clear_signal( [Values(true, false)] bool async) { const int threadsCount = 4; var semaphore = new SemaphoreSlimSignalable(0); semaphore.Signal(); semaphore.Reset(); var waitTasks = WaitAsync(semaphore, async, true, threadsCount, TimeSpan.FromSeconds(5)); for (int i = 0; i < threadsCount; i++) { semaphore.Release(); } var results = await waitTasks; Assert(results, SemaphoreSlimSignalable.SemaphoreWaitResult.Entered); }