public void Can_terminate_specific_running_command_multipletimes()
        {
            int             executionCount = 0;
            EventWaitHandle counterDone    = new EventWaitHandle(false, EventResetMode.ManualReset);

            var command = new Command("cmd", () =>
            {
                executionCount++;
                counterDone.Set();
                DoSomeCancellableAction();
            });

            commandHandler.RegisterCommand(command);

            for (var i = 0; i < 10; i++)
            {
                int oldExecutionCount = executionCount;
                counterDone.Reset();
                Task.Run(() => commandHandler.Invoke("cmd"));

                counterDone.AssertWaitOneSuccess();
                commandHandler.Terminate("cmd", AssertionExtensions.FastTimeout);

                commandHandler.RunningCommands.Should().BeEmpty();
                executionCount.Should().Be(oldExecutionCount + 1);
            }

            executionCount.Should().Be(10);
        }
 public void WaitForAdditionalAction()
 {
     additionalActionFinished.AssertWaitOneSuccess();
 }
 public void WaitForInitialization()
 {
     trace.AppendLine("WaitForInitialiation: OnEntry");
     initializeEvent.AssertWaitOneSuccess();
     trace.AppendLine("WaitForInitialiation: OnExit");
 }