[quote=引用 24 楼 xiaozhao127的回复:]兄弟程序是不是用了操作线程或外部组件调用。如果是线程设置为sta模式试试,如果外部组件,记得句柄销毁,回收内存如果。是循环里不停的申请内存,(如new操),作程序可用内存耗尽。windows二话不说直接沙雕你的进程。你说的这种有99.8%是内存耗尽被系统干掉的。
兄弟程序是不是用了操作线程或外部组件调用。如果是线程设置为sta模式试试,如果外部组件,记得句柄销毁,回收内存如果。是循环里不停的申请内存,(如new操),作程序可用内存耗尽。windows二话不说直接沙雕你的进程。你说的这种有99.8%是内存耗尽被系统干掉的。
楼上的代码给错了,线程异常不是主要位置 主要位置在 AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; 当然其实这个只是在崩溃前记录一下日志,不能防止崩溃(实际上你不拦,他也会在楼上说的系统日志里记录) so,首先你第一步不是纠结代码,而是去看系统日志。只有在系统日志里找不到详细信息的时候,我们才会动代码 拦截一下,并抓出dump,以便分析问题 private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { LogHelper.Error("守护崩溃", (Exception) e.ExceptionObject); var filename = @"dump\" + Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName) + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".dmp"; MiniDumpDemo.MiniDumpToFile(filename); LogHelper.info("守护崩溃,已在" + filename + "生成dum文件"); } 有管loghelper,你自己实现。至于MiniDumpDemo这个是一个抓dump的类,你自己百度。 闪退原因太多,你不定位原因,我们帮不了。我个人瞬间能想到10多种闪退原因,所以没有基础定位,要说如何解决,都可以出本书了
你有用到什么 第三方的程序吗
[quote=引用 1 楼 github_36000833的回复:]系统会对程序闪退记录日志,一般能提供很好的线索。 打开系统日志,可以键盘按Win+R,运行窗口中输入eventvwr.msc,回车。
1楼说的系统日志就很好用啊
往往是线程里出了异常/或者是调用了第三方本地dll中异常
想问下为什么不升vs版本呢
110,537
社区成员
642,576
社区内容
加载中
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧