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(); + } + /// /// 鼠标中键呼出 ///