当前位置: 代码迷 >> C# >> []求Windows程序崩溃后自动重启的解决办法
  详细解决方案

[]求Windows程序崩溃后自动重启的解决办法

热度:647   发布时间:2016-04-28 08:43:32.0
[紧急求助]求Windows程序崩溃后自动重启的解决方法
我们的系统是使用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中,我在调用它们方法的地方加异常处理应该没有用吧?

的确没有用
重启是下下策,除非c ++ dll 开发者不提供技术支持
正确的方法是重现错误,找到bug解决问题
具体什么错误代码呢?

------解决思路----------------------
可以写一个看门狗程序 每隔一个时间间隔和主程序进行通讯确认 监视主程序 如果主程序没有回应 就对程序进行重新启动
或者 在客户电脑设置一个任务计划  每隔多久进行一次电脑重启  把你的程序添加到任务计划中就可以了

其实做好的解决办法还是解决一下程序的异常并加上看门狗程序比较好
  相关解决方案