Files
GeekDesk/App.xaml.cs

73 lines
2.3 KiB
C#
Raw Normal View History

2021-07-21 11:15:51 +08:00
using GeekDesk.Constant;
2022-01-09 17:33:49 +08:00
using GeekDesk.Util;
2021-07-20 17:30:12 +08:00
using System;
using System.Windows;
2022-05-23 17:56:39 +08:00
using System.Windows.Input;
using System.Windows.Threading;
2021-04-12 13:46:05 +08:00
namespace GeekDesk
{
/// <summary>
/// App.xaml 的交互逻辑
/// </summary>
public partial class App : Application
{
2021-07-20 21:12:18 +08:00
2021-07-20 17:30:12 +08:00
System.Threading.Mutex mutex;
2021-07-20 21:12:18 +08:00
public App()
{
this.Startup += new StartupEventHandler(App_Startup);
2022-01-09 17:33:49 +08:00
Application.Current.DispatcherUnhandledException += Current_DispatcherUnhandledException;
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
2021-07-20 21:12:18 +08:00
}
2021-07-20 17:30:12 +08:00
private void App_Startup(object sender, StartupEventArgs e)
{
2021-07-20 21:12:18 +08:00
mutex = new System.Threading.Mutex(true, Constants.MY_NAME, out bool ret);
2021-07-20 17:30:12 +08:00
if (!ret)
{
System.Threading.Thread.Sleep(2000);
mutex = new System.Threading.Mutex(true, Constants.MY_NAME, out ret);
if (!ret)
{
Environment.Exit(0);
}
2021-07-20 17:30:12 +08:00
}
}
2022-01-09 17:33:49 +08:00
void Current_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
e.Handled = true;//使用这一行代码告诉运行时该异常被处理了不再作为UnhandledException抛出了。
2022-05-23 17:56:39 +08:00
Mouse.OverrideCursor = null;
2022-01-09 17:33:49 +08:00
LogUtil.WriteErrorLog(e, "未捕获异常!");
if (Constants.DEV)
{
MessageBox.Show("GeekDesk遇到一个问题, 不用担心, 这不影响其它操作!");
}
}
2021-07-20 17:30:12 +08:00
2022-01-09 17:33:49 +08:00
void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
LogUtil.WriteErrorLog(e, "严重异常!");
MessageBox.Show("GeekDesk遇到未知问题崩溃!");
}
2022-05-23 17:56:39 +08:00
public static void DoEvents()
{
var frame = new DispatcherFrame();
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background,
new DispatcherOperationCallback(
delegate (object f)
{
((DispatcherFrame)f).Continue = false;
return null;
}), frame);
Dispatcher.PushFrame(frame);
}
2021-07-20 17:30:12 +08:00
2022-01-09 17:33:49 +08:00
}
2021-07-20 17:30:12 +08:00
2021-04-12 13:46:05 +08:00
}