[PTRun] Gracefully shutdown all threads when exiting (#20450)

This commit is contained in:
Andrey Nekrasov
2022-09-12 13:20:24 +03:00
committed by GitHub
parent 73590c3ea9
commit 38e7b3b7ae
4 changed files with 31 additions and 26 deletions

View File

@@ -48,6 +48,7 @@ namespace PowerLauncher.ViewModel
private CancellationTokenSource _updateSource;
private CancellationToken _updateToken;
private CancellationToken _nativeWaiterCancelToken;
private bool _saved;
private ushort _hotkeyHandle;
@@ -59,7 +60,7 @@ namespace PowerLauncher.ViewModel
internal HotkeyManager HotkeyManager { get; private set; }
public MainViewModel(PowerToysRunSettings settings)
public MainViewModel(PowerToysRunSettings settings, CancellationToken nativeThreadCancelToken)
{
_saved = false;
_queryTextBeforeLeaveResults = string.Empty;
@@ -67,7 +68,7 @@ namespace PowerLauncher.ViewModel
_disposed = false;
_settings = settings ?? throw new ArgumentNullException(nameof(settings));
_nativeWaiterCancelToken = nativeThreadCancelToken;
_historyItemsStorage = new WoxJsonStorage<QueryHistory>();
_userSelectedRecordStorage = new WoxJsonStorage<UserSelectedRecord>();
_history = _historyItemsStorage.Load();
@@ -92,12 +93,12 @@ namespace PowerLauncher.ViewModel
Log.Info("RegisterHotkey()", GetType());
// Allow OOBE to call PowerToys Run.
NativeEventWaiter.WaitForEventLoop(Constants.PowerLauncherSharedEvent(), OnHotkey);
NativeEventWaiter.WaitForEventLoop(Constants.PowerLauncherSharedEvent(), OnHotkey, _nativeWaiterCancelToken);
if (_settings.StartedFromPowerToysRunner)
{
// Allow runner to call PowerToys Run from the centralized keyboard hook.
NativeEventWaiter.WaitForEventLoop(Constants.PowerLauncherCentralizedHookSharedEvent(), OnCentralizedKeyboardHookHotKey);
NativeEventWaiter.WaitForEventLoop(Constants.PowerLauncherCentralizedHookSharedEvent(), OnCentralizedKeyboardHookHotKey, _nativeWaiterCancelToken);
}
_settings.PropertyChanged += (s, e) =>