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

标签 c# wpf windows xna

我有一个应用程序(基于 XNA 项目模板),它在开始时显示一个窗口,以便用户可以更改一些设置。之后窗口关闭,程序在 XNA 管理的另一个窗口中继续运行。几乎恰好 15 分钟之后,程序在一个名为 Win32 的线程中崩溃,该线程不是主线程(但从未由我产生)并出现访问冲突。

使用标准调试器甚至没有堆栈跟踪。使用 native 调试器,它仅显示访问冲突发生在 Kernel32!BaseThreadInitThunk 中,这是一种未记录的方法。与此同时,主线程似乎仍在愉快地执行主游戏循环。

请记住,该应用程序是纯 C# 应用程序,所以这让我很困惑。

经过一些测试,我发现即使我显示一个空窗口也会发生这种情况:

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

所以在我的代码中去掉上面两行,程序就完全稳定了。将它们重新添加可确保在 15 分钟(+- 30 秒)后发生访问冲突。

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

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

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

最佳答案

听起来像是一个内存相关的问题,因为没有正确处理对象......

关于c# - 显示窗口 15 分钟后崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37476695/

相关文章:

wpf - PRISM 应用程序的整体应用程序架构

windows - 符合 MSSCCI 标准的 git 客户端

c++ - 依赖于操作系统的 C++ 内存泄漏?

c# - Unity - 添加对 GameObject OnMouseDown 事件的回调

c# - 如何仅导入类型而不导入实例?

wpf - 如何强制滚动条滚动 Canvas

c# - MenuItem 的子菜单打不开

windows - 将文件拖到 .exe 设置不同的工作目录

c# - 必填字段验证器在下拉列表回发时消失

c# - 转换为不排除表单成员的接口(interface)