我试图解决的症状是我的 XNA 应用程序在被最小化后的某些时候不会恢复。我单击最小化按钮,但是当我单击任务栏中的应用程序条目时,应用程序不会恢复 - 它保持最小化。此外,我听到 Windows“叮”的声音效果播放。
如果我反复单击该应用程序,它有时会恢复。我发现如果我的应用程序在其每帧更新调用中的处理时间较短,那么问题就很难重现。如果我添加这个:
System.Threading.Thread.Sleep(100);
那么申请恢复几乎是不可能的。
我发现如果我删除 Program.Main 上的 [STAThread],它总是可以完美恢复;但是,我使用需要在 Main 方法上设置 STAThread 的 winforms OpenFileDialog,因此我无法摆脱该属性。
关于为什么会发生这种情况的任何想法,以及是否有办法既使用 STAThread 又让应用程序正确恢复?
编辑:在内部,我的应用程序正在使用 ThreadPool.QueueUserWorkItem,而它的存在就是造成这种情况的原因。这是否意味着不应在 STAThread 应用程序中使用 ThreadPool.QueueUserWorkItem?