i0703mtf
i0703mtf
2020-09-03 12:07
采纳率: 100%
浏览 101

C#软件自动关闭异常,不知道是什么原因

软件有一个自动关闭功能(长时间不动软件后,软件一场,不名原因),运行一段时间后提示用户,如果60秒未操作,自动关闭,有时候会有有异常提示,不知道是什么原因,请帮忙查看一下,谢谢!
代码如下:

try
            {
                Thread closeErr = new Thread(new ThreadStart(() =>
                {
                    uint logTmp = 0;
                    while (DateTime.Now.Subtract(lastActionTime).TotalSeconds < closeTime)
                    {
                        Thread.Sleep(10000);//10秒检查一次
                    }

                    waitGO = false;
                    ThreadPool.QueueUserWorkItem((obj) =>
                    {

                        int closeNum = 60;
                        while (closeNum > 0)
                        {
                            Thread.Sleep(1000);

                            this.TopMost = true;
                            SetCloseBtnTest("关闭(" + closeNum.ToString() + "s)");
                            closeNum--;
                        }
                        SetCloseBtnTest("关闭...");
                        if (!waitGO)
                        {

                            btnClose_Click(null, null);
                        }

                    }, null);

                    {
                        this.ShowDialog();
                    }

                }));
                closeErr.IsBackground = true;
                closeErr.Start();
            }

            catch (System.Exception ex)
            {
                LogEntry(ex.Message);
            }

错误提示:
图片说明

图片提示时调用xxx.b_0()方法;
目前识别到的一种规避方案是在启动线程内部添加异常处理(只能防止异常崩溃),本质不是异常原因;
ThreadPool.QueueUserWorkItem((obj) =>
{try{}catch{}...

后续定位可能是由于内存异常导致;
在任务管理器中产看进程的“非分页内存”持续增高到3M-4M时,软件异常

根本原因还未定位具体位置。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • caozhy
    已采纳

    错误提示没有看到,
    LogEntry(ex.Message);记录下错误了么

    btnClose_Click(null, null);
    线程里面调用界面,用 Invoke 委托没有?

    点赞 评论

相关推荐