Преглед на файлове

[Re]move unwanted allocation (new CancellationTokenSource()) in WindowsDriver.EventsPending to only when needed (#274)

giladlevi преди 5 години
родител
ревизия
f0a079b242
променени са 1 файла, в които са добавени 8 реда и са изтрити 3 реда
  1. 8 3
      Terminal.Gui/Drivers/WindowsDriver.cs

+ 8 - 3
Terminal.Gui/Drivers/WindowsDriver.cs

@@ -503,8 +503,7 @@ namespace Terminal.Gui {
 
 
 			result = null;
 			result = null;
 			waitForProbe.Set();
 			waitForProbe.Set();
-			tokenSource.Dispose();
-			tokenSource = new CancellationTokenSource();
+
 			try {
 			try {
 				eventReady.Wait(waitTimeout, tokenSource.Token);
 				eventReady.Wait(waitTimeout, tokenSource.Token);
 			} catch (OperationCanceledException) {
 			} catch (OperationCanceledException) {
@@ -513,7 +512,13 @@ namespace Terminal.Gui {
 				eventReady.Reset();
 				eventReady.Reset();
 			}
 			}
 			Debug.WriteLine("Events ready");
 			Debug.WriteLine("Events ready");
-			return result != null || tokenSource.IsCancellationRequested;
+
+			if (!tokenSource.IsCancellationRequested)
+				return result != null;
+
+			tokenSource.Dispose();
+			tokenSource = new CancellationTokenSource();
+			return true;
 		}
 		}
 
 
 		Action<KeyEvent> keyHandler;
 		Action<KeyEvent> keyHandler;