加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 显示窗口后15分钟崩溃

发布时间:2020-12-15 07:53:20 所属栏目:百科 来源:网络整理
导读:我有一个应用程序(基于XNA项目模板),在开始时显示一个窗口,以便用户可以更改一些设置.之后,Window关闭,程序在XNA管理的另一个窗口中继续.差不多正好在15分钟之后,程序在一个名为Win32的线程中崩溃,该线程不是主线程(但我从未产生过),并且存在访问冲突. 使用
我有一个应用程序(基于XNA项目模板),在开始时显示一个窗口,以便用户可以更改一些设置.之后,Window关闭,程序在XNA管理的另一个窗口中继续.差不多正好在15分钟之后,程序在一个名为Win32的线程中崩溃,该线程不是主线程(但我从未产生过),并且存在访问冲突.

使用标准调试器甚至没有堆栈跟踪.使用本机调试器,它只显示访问冲突发生在Kernel32!BaseThreadInitThunk中,这是一个未记录的方法.与此同时,主线程似乎仍然乐于执行主游戏循环.

请记住,该应用程序是一个纯粹的C#应用??程序,所以这真令我困惑.

经过一些测试后,我发现如果我显示一个空窗口,甚至会发生这种情况:

Window window = new Window();
window.ShowDialog();

因此,在我的代码中删除上面的两行使程序完全稳定.添加它们可确保15分钟( – 30秒)后的访问冲突.

我已经检查过产生窗口的主线程是一个STA线程.我也尝试手动启动调度程序,但这似乎没有帮助(调度似乎已经在运行),我甚至试图在我显示窗口后关闭调度程序,也没有效果.

我还尝试使用在this答案中描述的多个线程中显示窗口的技术来显示窗口.但这也没有效果.我甚至尝试启动一个完全独立的线程来显示窗口(使用相同的技术).这也没有效果.

这两行代码怎么能让我的程序在15分钟后崩溃?可能需要对空的标准窗户进行什么样的清理?

解决方法

听起来像是因为没有正确处理对象而与内存相关的问题……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读