疑难杂症:Winfrom最小化程序到任务栏后,等一会儿就无法恢复了?

tianliang1 2012-03-16 10:50:04
程序运行后,点击窗口最小化或者切换到其他的应用程序界面去,过一段时间(几分钟到几十分钟不等)不操作它,再切换回

去,就无法恢复显示窗口。只能通过任务管理器去结束进程才可以关闭程序,这到底是怎么一回事呢?内存占用率也不

高。。。

跪求高人指点迷津,或者说说造成这种情况的可能性?

补充说明,普通的Winfrom程序。里面用了evpress.XtraGrid控件系列,多线程等技术,但最小化或切换到后台运行时,系统

根本没有做任何额外操作。



...全文
578 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianliang1 2012-09-11
  • 打赏
  • 举报
回复
这个问题时隔那么久,今天来结贴。
当时是怎么解决的呢?
说说,虽然本质没有找到
是删除了一句这样的代码 xxx.dispose();
估计跟多线程和资源释放有关系。
Code従業員 2012-03-20
  • 打赏
  • 举报
回复
做个简单的例子,你做个线程,直接放后台Thread.Sleep(1000000);然后直接关主窗体,看看是不是报相同的错误,当然你的后台线程在子窗体申明的话,关子窗体就有效果了。
Code従業員 2012-03-20
  • 打赏
  • 举报
回复
不用纠结死循环,这个应该是线程结束时没有及时的释放。
lv106 2012-03-19
  • 打赏
  • 举报
回复
排除法咯。。没办法。。。先保留界面方面的代码,注释掉其他方法;再逐步恢复方法看看是哪里的方法导致这个问题
tianliang1 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 wenjunsu 的回复:]
不是多线程吗?怎么才一个BackGroundWork?
[/Quote]
这难道不是用的多线程异步技术?
tianliang1 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 wenjunsu 的回复:]
不是多线程吗?怎么才一个BackGroundWork?
[/Quote]
这个难道不是多线程的异步技术?
tianliang1 2012-03-19
  • 打赏
  • 举报
回复
重绘受阻?什么情况下才会重回受阻呢?
tianliang1 2012-03-19
  • 打赏
  • 举报
回复
程序切换到后台后,没有做任何操作的。
在别人的机子上运行这个程序,也会不定时出现。
wenjunsu 2012-03-19
  • 打赏
  • 举报
回复
不是多线程吗?怎么才一个BackGroundWork?
tianliang1 2012-03-19
  • 打赏
  • 举报
回复
是呀,我也估计是线程的问题,但一个BackGroundWork,怎么会导致这样的问题呀,费解。。
wenjunsu 2012-03-19
  • 打赏
  • 举报
回复
据经验。很怀疑是线程之间的问题。引起的。重点排查
tianliang1 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 icdbow 的回复:]
呵呵,你应该是使用后台线程死循环,监听端口什么的,我原来也碰到这个问题,郁闷的不行。
我的是运行10分钟后,关闭程序就弹。
后来发现症结了,是因为调用的后台线程还在跑,前台程序关闭,卸载后台线程的时候,线程还在Thread.Sleep
就是相差1毫秒,都弹错,后台线程又不能单步,头疼啊。

后来我修改了监控类,继承了IDisposable并重写的Dispose()方法,加了一句threa……
[/Quote]
可是我程序中的不存在什么死循环之类的东西呀。就一个BackGroundWroker类实现一个进度条。。。在DoWork后,就把进度条关闭了。。

求解。这个问题纠结几天了,因为无法定位,也不确定什么时候出现,所以特别纠结。。。
Code従業員 2012-03-19
  • 打赏
  • 举报
回复
呵呵,你应该是使用后台线程死循环,监听端口什么的,我原来也碰到这个问题,郁闷的不行。
我的是运行10分钟后,关闭程序就弹。
后来发现症结了,是因为调用的后台线程还在跑,前台程序关闭,卸载后台线程的时候,线程还在Thread.Sleep
就是相差1毫秒,都弹错,后台线程又不能单步,头疼啊。

后来我修改了监控类,继承了IDisposable并重写的Dispose()方法,加了一句threadRun.DisableComObjectEagerCleanup();,就一直相安无事了(threadRun是我的后台线程)
allen0118 2012-03-19
  • 打赏
  • 举报
回复
放个断点看看在哪里出错了,另外不要Try起来,不然看不到错误也是没办法解决的。
dabingsou 2012-03-19
  • 打赏
  • 举报
回复
线程问题
tianliang1 2012-03-19
  • 打赏
  • 举报
回复
每次都停在这里。
SystemEvents类的,
_syncContext.Send(new SendOrPostCallback(InvokeCallback), args);

每次报错,都停在这句。。。
异常信息:cannot evaluate expression because the current thread is in sleep,wait,or join。


求解。。。
tianliang1 2012-03-17
  • 打赏
  • 举报
回复
恩。最老火的是,这种问题,不好定位,也搞不清到底是哪个细节会出问题。。。若是多线程的问题,怎么会在系统什么事情都没有做的情况下,停顿一顿时间就无法恢复。。。

多线程死锁,也该是在运行或者处理计算中才会出现这个问题呀。。
ycagri 2012-03-17
  • 打赏
  • 举报
回复
重点排查与任务栏相关的几小段事件程序
bdmh 2012-03-17
  • 打赏
  • 举报
回复
应该还是代码设计引起的,只能一步步查了,记录日志,或者把代码都屏蔽,一条条放开,看看哪里出问题
muyi66 2012-03-17
  • 打赏
  • 举报
回复
猜不出,建议你分别排查。

猜测起来应该就几种愿意:控件bug、重绘受阻、程序死锁。从故障出现时间不固定来看,也许程序死锁的可能性要大一点。
加载更多回复(4)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧