mirror of
https://github.com/microsoft/PowerToys.git
synced 2024-12-21 07:17:56 +08:00
09f4dead7f
* [Awake] Don't use Process.Exit and move to CsWin32 * [PowerLauncher] Remove unused API * [ColorPicker] Use cancellable NativeEventWaiter + cleanup using * [TextExtractor] Don't use Environment.Exit * [MeasureTool] Don't use Environment.Exit(0); * [FZE] don't use Environment.Exit and fix WaitForPowerToysRunner
34 lines
1.0 KiB
C#
34 lines
1.0 KiB
C#
// Copyright (c) Microsoft Corporation
|
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
using System;
|
|
using System.Threading;
|
|
|
|
using Dispatcher = System.Windows.Threading.Dispatcher;
|
|
|
|
namespace Common.UI
|
|
{
|
|
public static class NativeEventWaiter
|
|
{
|
|
public static void WaitForEventLoop(string eventName, Action callback, Dispatcher dispatcher, CancellationToken cancel)
|
|
{
|
|
new Thread(() =>
|
|
{
|
|
var eventHandle = new EventWaitHandle(false, EventResetMode.ManualReset, eventName);
|
|
while (true)
|
|
{
|
|
if (WaitHandle.WaitAny(new WaitHandle[] { cancel.WaitHandle, eventHandle }) == 1)
|
|
{
|
|
dispatcher.BeginInvoke(callback);
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
}).Start();
|
|
}
|
|
}
|
|
}
|