修复未完全关闭进程的bug

This commit is contained in:
liufei
2021-12-13 13:03:50 +08:00
parent f96a76e6fb
commit 3483bf88c2
3 changed files with 17 additions and 4 deletions

View File

@@ -124,7 +124,7 @@
<hc:NotifyIcon.ContextMenu> <hc:NotifyIcon.ContextMenu>
<ContextMenu Width="130"> <ContextMenu Width="130">
<MenuItem Header="打开面板" Click="ShowApp"/> <MenuItem Header="打开面板" Click="ShowApp"/>
<MenuItem Header="关闭托盘图标" Click="CloseBarIcon"/> <MenuItem Header="关闭图标" Click="CloseBarIcon"/>
<MenuItem Header="待办" Click="BacklogMenuClick"/> <MenuItem Header="待办" Click="BacklogMenuClick"/>
<MenuItem Header="程序目录" Click="OpenThisDir"/> <MenuItem Header="程序目录" Click="OpenThisDir"/>
<MenuItem Header="设置" Click="ConfigApp"/> <MenuItem Header="设置" Click="ConfigApp"/>

View File

@@ -426,6 +426,7 @@ namespace GeekDesk
/// <param name="e"></param> /// <param name="e"></param>
private void ExitApp(object sender, RoutedEventArgs e) private void ExitApp(object sender, RoutedEventArgs e)
{ {
MouseHookThread.Dispose();
Application.Current.Shutdown(); Application.Current.Shutdown();
} }
@@ -506,10 +507,13 @@ namespace GeekDesk
/// <param name="e"></param> /// <param name="e"></param>
private void ReStartApp(object sender, RoutedEventArgs e) private void ReStartApp(object sender, RoutedEventArgs e)
{ {
MouseHookThread.Dispose();
Process p = new Process(); Process p = new Process();
p.StartInfo.FileName = Constants.APP_DIR + Constants.MY_NAME + ".exe"; p.StartInfo.FileName = Constants.APP_DIR + Constants.MY_NAME + ".exe";
p.StartInfo.WorkingDirectory = Constants.APP_DIR; p.StartInfo.WorkingDirectory = Constants.APP_DIR;
p.Start(); p.Start();
Application.Current.Shutdown(); Application.Current.Shutdown();
} }

View File

@@ -15,19 +15,28 @@ namespace GeekDesk.Thread
public class MouseHookThread public class MouseHookThread
{ {
private static AppConfig appConfig = MainWindow.appData.AppConfig; 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() public static void MiddleHook()
{ {
//使用dispatcher来单独监听UI线程 防止程序卡顿 //使用dispatcher来单独监听UI线程 防止程序卡顿
Dispatcher dispatcher = DispatcherBuild.Build(); dispatcher = DispatcherBuild.Build();
dispatcher.Invoke((Action)(() => dispatcher.Invoke((Action)(() =>
{ {
m_GlobalHook.MouseDownExt += M_GlobalHook_MouseDownExt; m_GlobalHook.MouseDownExt += M_GlobalHook_MouseDownExt;
})); }));
} }
public static void Dispose()
{
m_GlobalHook.MouseDownExt -= M_GlobalHook_MouseDownExt;
m_GlobalHook.Dispose();
dispatcher.InvokeShutdown();
}
/// <summary> /// <summary>
/// 鼠标中键呼出 /// 鼠标中键呼出
/// </summary> /// </summary>