public void Dispose()
 {
     if (_enteredSemaphore)
     {
         _semaphoreSlimSignalable.Release();
     }
 }
Exemplo n.º 2
0
        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);
        }