From 3483bf88c205dde85a90dfc866202e685de4ef53 Mon Sep 17 00:00:00 2001 From: liufei Date: Mon, 13 Dec 2021 13:03:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=AA=E5=AE=8C=E5=85=A8?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E8=BF=9B=E7=A8=8B=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MainWindow.xaml | 2 +- MainWindow.xaml.cs | 4 ++++ Thread/MouseHookThread.cs | 15 ++++++++++++--- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/MainWindow.xaml b/MainWindow.xaml index affd2ab..b0077bc 100644 --- a/MainWindow.xaml +++ b/MainWindow.xaml @@ -124,7 +124,7 @@ - + diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index aac0568..ab49a8a 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -426,6 +426,7 @@ namespace GeekDesk /// private void ExitApp(object sender, RoutedEventArgs e) { + MouseHookThread.Dispose(); Application.Current.Shutdown(); } @@ -506,10 +507,13 @@ namespace GeekDesk /// private void ReStartApp(object sender, RoutedEventArgs e) { + MouseHookThread.Dispose(); + Process p = new Process(); p.StartInfo.FileName = Constants.APP_DIR + Constants.MY_NAME + ".exe"; p.StartInfo.WorkingDirectory = Constants.APP_DIR; p.Start(); + Application.Current.Shutdown(); } diff --git a/Thread/MouseHookThread.cs b/Thread/MouseHookThread.cs index 8bb3a37..33be9de 100644 --- a/Thread/MouseHookThread.cs +++ b/Thread/MouseHookThread.cs @@ -15,19 +15,28 @@ namespace GeekDesk.Thread public class MouseHookThread { private static AppConfig appConfig = MainWindow.appData.AppConfig; - public static IKeyboardMouseEvents m_GlobalHook = Hook.GlobalEvents(); - + private static IKeyboardMouseEvents m_GlobalHook = Hook.GlobalEvents(); + private static Dispatcher dispatcher; + + public static void MiddleHook() { //使用dispatcher来单独监听UI线程 防止程序卡顿 - Dispatcher dispatcher = DispatcherBuild.Build(); + dispatcher = DispatcherBuild.Build(); dispatcher.Invoke((Action)(() => { m_GlobalHook.MouseDownExt += M_GlobalHook_MouseDownExt; })); } + public static void Dispose() + { + m_GlobalHook.MouseDownExt -= M_GlobalHook_MouseDownExt; + m_GlobalHook.Dispose(); + dispatcher.InvokeShutdown(); + } + /// /// 鼠标中键呼出 ///