From 645b93d648d6f42eb485989230c5978fcadbb737 Mon Sep 17 00:00:00 2001 From: Tig Kindel Date: Wed, 12 Jul 2023 07:59:29 -0700 Subject: [PATCH] Use Task.Delay instead of Thread.Sleep for resize polling. From #2731. --- Terminal.Gui/ConsoleDrivers/NetDriver.cs | 5 +++-- Terminal.Gui/ConsoleDrivers/WindowsDriver.cs | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Terminal.Gui/ConsoleDrivers/NetDriver.cs b/Terminal.Gui/ConsoleDrivers/NetDriver.cs index c6f7bc026..0b7985859 100644 --- a/Terminal.Gui/ConsoleDrivers/NetDriver.cs +++ b/Terminal.Gui/ConsoleDrivers/NetDriver.cs @@ -223,8 +223,9 @@ namespace Terminal.Gui { void WaitWinChange () { while (true) { - // HACK: Sleep for 10ms to mitigate high CPU usage (see issue #1502). 10ms was tested to address the problem, but may not be correct. - Thread.Sleep (10); + // Wait for a while then check if screen has changed sizes + Task.Delay (500).Wait (); + if (stopTasks) { return; } diff --git a/Terminal.Gui/ConsoleDrivers/WindowsDriver.cs b/Terminal.Gui/ConsoleDrivers/WindowsDriver.cs index ccc77044a..36f5dc82d 100644 --- a/Terminal.Gui/ConsoleDrivers/WindowsDriver.cs +++ b/Terminal.Gui/ConsoleDrivers/WindowsDriver.cs @@ -1917,7 +1917,8 @@ namespace Terminal.Gui { void WaitWinChange () { while (true) { - Thread.Sleep (100); + // Wait for a while then check if screen has changed sizes + Task.Delay (500).Wait (); if (!consoleDriver.EnableConsoleScrolling) { windowSize = winConsole.GetConsoleBufferWindow (out _); //System.Diagnostics.Debug.WriteLine ($"{consoleDriver.EnableConsoleScrolling},{windowSize.Width},{windowSize.Height}");