程序运行后,点击窗口最小化或者切换到其他的应用程序界面去,过一段时间(几分钟到几十分钟不等)不操作它,再切换回去,就无法恢复显示窗口。只能通过任务管理器去结束进程才可以关闭程序,这到底是怎么一回事呢?内存占用率也不高跪求高人指点迷津,或者说说造成这种情况的可能性?补充说明,普通的Winfrom程序。里面用了evpress.XtraGrid控件系列,多线程等技术,但最小化或切换到后台运行时,系统根本没有做任何额外操作。

解决方案 »

  1.   

    猜不出,建议你分别排查。猜测起来应该就几种愿意:控件bug、重绘受阻、程序死锁。从故障出现时间不固定来看,也许程序死锁的可能性要大一点。
      

  2.   

    每次都停在这里。
    SystemEvents类的,
     _syncContext.Send(new SendOrPostCallback(InvokeCallback), args); 每次报错,都停在这句
    异常信息:cannot evaluate expression because the current thread is in sleep,wait,or join。
    求解
      

  3.   

    放个断点看看在哪里出错了,另外不要Try起来,不然看不到错误也是没办法解决的。
      

  4.   

    呵呵,你应该是使用后台线程死循环,监听端口什么的,我原来也碰到这个问题,郁闷的不行。
    我的是运行10分钟后,关闭程序就弹。
    后来发现症结了,是因为调用的后台线程还在跑,前台程序关闭,卸载后台线程的时候,线程还在Thread.Sleep
    就是相差1毫秒,都弹错,后台线程又不能单步,头疼啊。后来我修改了监控类,继承了IDisposable并重写的Dispose()方法,加了一句threadRun.DisableComObjectEagerCleanup();,就一直相安无事了(threadRun是我的后台线程)
      

  5.   

    可是我程序中的不存在什么死循环之类的东西呀。就一个BackGroundWroker类实现一个进度条在DoWork后,就把进度条关闭了。。求解。这个问题纠结几天了,因为无法定位,也不确定什么时候出现,所以特别纠结
      

  6.   

    是呀,我也估计是线程的问题,但一个BackGroundWork,怎么会导致这样的问题呀,费解。。
      

  7.   

    不是多线程吗?怎么才一个BackGroundWork?
      

  8.   

    做个简单的例子,你做个线程,直接放后台Thread.Sleep(1000000);然后直接关主窗体,看看是不是报相同的错误,当然你的后台线程在子窗体申明的话,关子窗体就有效果了。
      

  9.   

    这个问题时隔那么久,今天来结贴。
    当时是怎么解决的呢?
    说说,虽然本质没有找到
    是删除了一句这样的代码 xxx.dispose();
    估计跟多线程和资源释放有关系。