@@ -680,18 +680,30 @@ private void RunExecutionLoop(bool isForDebug = false)
680
680
}
681
681
682
682
using CancellationScope cancellationScope = _cancellationContext . EnterScope ( false ) ;
683
- DoOneRepl ( cancellationScope . CancellationToken ) ;
683
+
684
+ try
685
+ {
686
+ DoOneRepl ( cancellationScope . CancellationToken ) ;
687
+ }
688
+ catch ( OperationCanceledException )
689
+ {
690
+ if ( isForDebug )
691
+ {
692
+ while ( Runspace is { RunspaceIsRemote : true } remoteRunspace
693
+ && ! remoteRunspace . RunspaceStateInfo . IsUsable ( ) )
694
+ {
695
+ PopPowerShell ( RunspaceChangeAction . Exit ) ;
696
+ }
697
+
698
+ return ;
699
+ }
700
+ }
684
701
685
702
while ( ! ShouldExitExecutionLoop
686
703
&& ! cancellationScope . CancellationToken . IsCancellationRequested
687
704
&& _taskQueue . TryTake ( out ISynchronousTask task ) )
688
705
{
689
706
task . ExecuteSynchronously ( cancellationScope . CancellationToken ) ;
690
- while ( Runspace is { RunspaceIsRemote : true } remoteRunspace
691
- && ! remoteRunspace . RunspaceStateInfo . IsUsable ( ) )
692
- {
693
- PopPowerShell ( RunspaceChangeAction . Exit ) ;
694
- }
695
707
}
696
708
697
709
if ( _shouldExit
@@ -759,7 +771,7 @@ private void DoOneRepl(CancellationToken cancellationToken)
759
771
}
760
772
catch ( OperationCanceledException )
761
773
{
762
- // Do nothing, since we were just cancelled
774
+ throw ;
763
775
}
764
776
// Propagate exceptions thrown from the debugger when quitting.
765
777
catch ( TerminateException )
@@ -828,6 +840,7 @@ public void WriteWithPrompt(PSCommand command, CancellationToken cancellationTok
828
840
829
841
private string InvokeReadLine ( CancellationToken cancellationToken )
830
842
{
843
+ cancellationToken . ThrowIfCancellationRequested ( ) ;
831
844
try
832
845
{
833
846
_readKeyCancellationToken = cancellationToken ;
0 commit comments