Windows 形成未处理的异常崩溃
Windows Forms Unhandled Exception Crash
我有适合我的 winforms 应用程序的代码来处理未处理的异常。然而,我的应用程序仍然崩溃。
在这个阶段,我确实不明白为什么会出现这种行为。非常感谢您的帮助。
这是我的代码:
[STAThread]
private static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
bool result;
var mutex = new System.Threading.Mutex(true, "MyApplication", out result);
if (!result)
{
MessageBox.Show("Another instance is already running.");
return;
}
Application.ThreadException += ApplicationThreadException;
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException;
Memory.frmMain = new MainForm();
Application.Run(new MyApplicationContext());
GC.KeepAlive(mutex);
}
public static void CurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
MessageBox.Show(((Exception)e.ExceptionObject).Message);
((Exception)e.ExceptionObject).AddLog();
Memory.processtranslations.IsProcessing.Enabled = true;
}
public static void ApplicationThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
MessageBox.Show(e.Exception.Message);
e.Exception.AddLog();
Memory.processtranslations.IsProcessing.Enabled = true;
}
尝试将 [HandleProcessCorruptedStateExceptions]
属性添加到 Main 方法。更重要的是,让你的主循环进入 try..catch:
[HandleProcessCorruptedStateExceptions]
static void Main(string[] args)
{
//other code
try
{
Application.Run(new MyApplicationContext());
}catch(Exception)
{
//...
}
}
我有适合我的 winforms 应用程序的代码来处理未处理的异常。然而,我的应用程序仍然崩溃。
在这个阶段,我确实不明白为什么会出现这种行为。非常感谢您的帮助。
这是我的代码:
[STAThread]
private static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
bool result;
var mutex = new System.Threading.Mutex(true, "MyApplication", out result);
if (!result)
{
MessageBox.Show("Another instance is already running.");
return;
}
Application.ThreadException += ApplicationThreadException;
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException;
Memory.frmMain = new MainForm();
Application.Run(new MyApplicationContext());
GC.KeepAlive(mutex);
}
public static void CurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
MessageBox.Show(((Exception)e.ExceptionObject).Message);
((Exception)e.ExceptionObject).AddLog();
Memory.processtranslations.IsProcessing.Enabled = true;
}
public static void ApplicationThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
MessageBox.Show(e.Exception.Message);
e.Exception.AddLog();
Memory.processtranslations.IsProcessing.Enabled = true;
}
尝试将 [HandleProcessCorruptedStateExceptions]
属性添加到 Main 方法。更重要的是,让你的主循环进入 try..catch:
[HandleProcessCorruptedStateExceptions]
static void Main(string[] args)
{
//other code
try
{
Application.Run(new MyApplicationContext());
}catch(Exception)
{
//...
}
}