내가 해결하려고하는 증상은 XNA 응용 프로그램이 최소화 된 후 시간을 일부 복원하지 않는다는 것입니다. 최소화 버튼을 클릭했지만 작업 표시 줄에서 내 응용 프로그램의 항목을 클릭하면 응용 프로그램이 다시 시작되지 않습니다. 최소화 된 상태로 유지됩니다. 또한 Windows "딩 (ding)"효과음이 들립니다.느린 FPS가있는 XNA 게임의 Program.Main에 [STAThread]를 두는 것이 왜 최소화시 복원을 방해합니까?
응용 프로그램을 반복적으로 클릭하면 때때로 다시 시작됩니다. 내 응용 프로그램이 모든 프레임 업데이트 호출에서 처리 시간이 적 으면 문제를 재현하는 것이 어렵다는 것을 발견했습니다. 추가 할 경우 :
System.Threading.Thread.Sleep(100);
응용 프로그램을 다시 시작하는 것은 거의 불가능합니다.
Program.Main에서 [STAThread]를 제거하면 항상 완벽하게 재개됩니다. 그러나, WinForm 해당 OpenFileDialog 's 사용할 수 없도록 주 메서드를 설정할 수있는 STAThread 필요합니다.
왜 이런 일이 벌어지고 있는지, 그리고 STAThread를 사용하고 응용 프로그램을 제대로 재개 할 수있는 방법이 있다면 어떻습니까?
편집 : 내부적으로 내 응용 프로그램은 ThreadPool.QueueUserWorkItem을 사용하고 있으며 그 원인은이 문제의 원인입니다. 이것은 ThreadPool.QueueUserWorkItem이 STAThread 어플리케이션에서 사용되어서는 안된다는 것을 의미합니까?