C# WinForm 不抱错,自动退出的情况
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# WinForm 不抱错,自动退出的情况相关的知识,希望对你有一定的参考价值。
这种现象出现的时间不详! 有时候是10分钟,有时候是2小时。系统日志中也没有错误的信息。在程序的入口中也加入了AppDomain.CurrentDomain.UnhandledException异常的捕捉,但是也没有任何的异常信息。程序中主要就是两个线程对一个列表中的对象进行读写操作。请问高人这个如何解决啊!
这种有多半是由于线程冲突造成的。多半涉及到你线程中操作的对象的“释放”没处理好。(你可以打开此程序,然后到“任务管理器”中查看此程序的“线程数、IO读取写入、“GDI对象”、“内存占用”等信息,是否正常。记录下数据,然后程序开几分钟后,再看看。)追问
我在公司的电脑上运行很正常!跑了一天了都没有问题,就是到客户那里就会有问题。内存:30M,线程数20,GDI:70。如果说线程冲突的话,我在对象访问和修改的地方都已经添加了锁了。应该不会有冲突啊。之前看到一个帖子说,是因为两个线程访问同一个对象,他们之间访问的时间间隔相差很小的时候,可能会出现此情况。不知道这样分析是否有道理?
追答有一定的道理。 多纯种中使用共享对象的时候,lock一下,比较安全。
参考技术A 是不是跨线程操作导致的,并且你这两个线程是自己开启的还是包含了主线程(UI)。如果可以程序片段发上来看看,并且可以的话定义一个全局的异常处理,看看是不是跨线程操作导致。追问这两个线程是在主线程中new的,而且在线程中也用到了代理,但是我在公司找了台PC测试了一整天都没有问题,为什么放到客户那里就会不定时的自动退出?有时候只要10分钟就退出了。
系统日志,和我自己添加的全局异常捕捉都没有错误。郁闷呢
这和机器的环境有关吧,包括系统资源。我想问问是不是每次到了十分钟就会退出?关键是代码没有看到我不好给予直接的回答呀,并且你可以在其他的机子上试试看看有没有出现什么异常情况。并且你把问题描述的清楚点。包括你开辟线程的操作是为了什么。
参考技术B 我最近是在做WinForm项目,也有遇到这个问题,现象和你的一样,不过现在解决了,但是还是不知道是什么原因影响,我觉得是有些错误没有捕捉到引起的,你试下都加trycatch() 参考技术C 我只这样解决的。之前是框架是4.5 的框架,后来因为需要降级为2.0。。降级就不抱错了,直接退出了,好奇怪啊,难道2.0 就没这功能了吗。。后来我就改回4.5, 然后把错误解决了,再调回2.0 一切正常。哇哈哈哈。 参考技术D 有可能是使用内存过多 VS调试程序会自动关掉它
C# winform 退出时报错.(未将对象引用到实例)
public MainForm()
InitializeComponent();
this.Icon = new System.Drawing.Icon(@"指南针.ico");
skinEngine1.SkinFile = Application.StartupPath + @"\pifu\MSN.ssk";
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose(bool disposing)
if (disposing)
if (components != null)
components.Dispose();
base.Dispose(disposing);//这行出的错
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
Application.Run(new MainForm());
skinEngine1 是一个第三方控件.我如果不加这句话就不会报错.都是在退出时报错.
private void MainForm_Load(object sender, EventArgs e)
skinEngine1.SkinFile = Application.StartupPath + @"\pifu\MSN.ssk";
//-----------------退出系统-----------------------
private void menuItem11_Click(object sender, System.EventArgs e)
skinEngine1.Active = false;
this.Close();
都加上了,还是不好使啊
以上是关于C# WinForm 不抱错,自动退出的情况的主要内容,如果未能解决你的问题,请参考以下文章