【发布时间】:2011-06-01 23:19:43
【问题描述】:
我们有一个使用 WPF 用 C# 编写的应用程序。 它有一个基于计时器的激活事件,会导致在 DirectX 上下文中进行一些绘图。
一切看起来都很好,直到我们打开子窗口,并在屏幕上移动它。时间似乎与计时器被触发的时间一致,但在那一刻,整个屏幕(甚至其他应用程序)似乎都冻结了,用户无法点击任何地方。
如果按下 ALT+TAB 组合键,则正常操作会从冻结的完全相同的点恢复。在冻结状态期间,CPU/内存利用率没有上升,这让我怀疑主线程上存在某种阻塞。
通常,如果我的应用程序在某个操作过程中挂起,我会在 Visual Studio 中按下暂停键,然后在调试器中查看线程视图。这让我充分了解哪个电话是罪魁祸首。
但在这种情况下,如果我按 ALT+TAB 切换到 IDE,我的应用程序会恢复正常执行。如果我将 IDE 放在辅助屏幕上并尝试单击(无需按 ALT+TAB),它似乎也被冻结(正如我之前提到的,整个桌面似乎被鼠标点击冻结。但是鼠标移动是正常)
任何人都面临/知道类似的问题,我该如何继续调试它?
【问题讨论】:
标签: c# wpf windows directx window