mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 19:57:57 +01:00
[PTRun] Gracefully shutdown all threads when exiting (#20450)
This commit is contained in:
@@ -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) =>
|
||||
|
||||
Reference in New Issue
Block a user