none
c#多线程开发的程序,运行一段时间后提示:【应用程序名】遇到问题需要关闭。我们对此引起的不便表示抱歉。急! RRS feed

  • 问题

  • 用c#多线程(只有一个线程,处理完任务后休眠1分钟)开发的程序,运行一段时间后提示:

    【应用程序名】遇到问题需要关闭。我们对此引起的不便表示抱歉。

    哪位遇到过这个问题?怎么解决?QQ: 515435328

    田田qq:764574267


    这个程序之前是没有采用多线程,使用定时器timer控件来定时执行任务的,这种情况下不会出现此现象。

    后来改为多线程,休眠时间为5分钟时,也不会出现此现象;

    再后来,将休眠时间改为1秒钟时,频繁出现此现象;

    现在改为休眠1分钟,也会出现此现象。

    • 已编辑 ttsoft888 2012年7月20日 7:54 详细描述
    2012年7月20日 7:42

答案

  • Hi ttsoft888,

      你能否在这个程序执行的前后设置try catch来得到它的堆栈错误以及设置一些记录日志来记录发生exception的时间!这样才能找到如何解决问题,产生异常的问题所在!


    Jason Wang [MSFT]
    MSDN Community Support | Feedback to us

    2012年7月23日 6:18
    版主
  • 程序做了修改,现在问题已经解决!

    原因是

    创建的线程执行完任务后没有进行垃圾回收。资源耗尽,所以报错。

    解决办法:

        不用死循环,用timer间隔30秒创建一个线程,进行处理任务。创建线程前判断,如果已经存在线程,则先将之前的线程abort,然后 GC.Collect(),在测试时发现内存使用1个小时后,会降下来。而且解决了以上的问题。


    田田qq:764574267


    2012年8月2日 5:43

全部回复

  • Hi ttsoft888,

      你能否在这个程序执行的前后设置try catch来得到它的堆栈错误以及设置一些记录日志来记录发生exception的时间!这样才能找到如何解决问题,产生异常的问题所在!


    Jason Wang [MSFT]
    MSDN Community Support | Feedback to us

    2012年7月23日 6:18
    版主
  • 程序做了修改,现在问题已经解决!

    原因是

    创建的线程执行完任务后没有进行垃圾回收。资源耗尽,所以报错。

    解决办法:

        不用死循环,用timer间隔30秒创建一个线程,进行处理任务。创建线程前判断,如果已经存在线程,则先将之前的线程abort,然后 GC.Collect(),在测试时发现内存使用1个小时后,会降下来。而且解决了以上的问题。


    田田qq:764574267


    2012年8月2日 5:43