我们的系统是使用WPF开发的Windows应用程序,在客户环境中,会每隔一段时间崩溃掉,就是出现一个系统错误提示框(什么“要不要向微软发送错误报告"的这个东东),现在怀疑是使用第三方dll导致的,一时半会找不到根本原因,现在就想折中处理一下,一旦崩溃,程序就自动重启,有没有哪位高人做过,有没有什么好建议。另外,自动重启程序时,那个系统错误提示框该怎么处理?
------解决思路----------------------
另外做一个服务或者程序定时监控系统进程。
------解决思路----------------------
程序奔溃的话,都会在入口函数出现异常~处理一下应该就可以了~~~
------解决思路----------------------
winform可以有两个事件来捕获主线程异常和线程异常,Application.ThreadException和Application.SetUnhandledExceptionMode,wpf应该也可以吧
------解决思路----------------------
你做一个保姆程序,主程序启动时通过ServiceController启动你的服务,窗体退出前停止你的服务。
服务的代码大致如下:
System.Timers.Timer timer = new System.Timers.Timer(500);
timer.Elapsed += Nurse;
timer.AutoReset = true;
timer.Start();
private void Nurse(object sender, System.Timers.ElapsedEventArgs e)
{
if (Process.GetProcessesByName("报错窗体进程名称").Where(s => s.MainWindowHandle != IntPtr.Zero).Count() > 0)
{
//杀死该进程
}
if (Process.GetProcessesByName("你的应用进程名称").Where(s => s.MainWindowHandle != IntPtr.Zero).Count() == 0)
{
//重启你的程序
}
}
------解决思路----------------------
你可以加个全局异常处理并记录异常。
再者,你可以把你怀疑的第三方控件,去掉,测试下。
------解决思路----------------------
的确没有用
重启是下下策,除非c ++ dll 开发者不提供技术支持
正确的方法是重现错误,找到bug解决问题
具体什么错误代码呢?
------解决思路----------------------
可以写一个看门狗程序 每隔一个时间间隔和主程序进行通讯确认 监视主程序 如果主程序没有回应 就对程序进行重新启动
或者 在客户电脑设置一个任务计划 每隔多久进行一次电脑重启 把你的程序添加到任务计划中就可以了
其实做好的解决办法还是解决一下程序的异常并加上看门狗程序比较好