C# 检查应用程序何时全屏显示。(DXGI/DirectX10)

C# 检查应用程序何时全屏显示。(DXGI/DirectX10),c#,.net,windows,directx,dxgi,C#,.net,Windows,Directx,Dxgi,这是我的问题。。。 有一种方法可以检查应用程序在DXGI(DX10/11)中何时全屏显示。 对于全屏显示,我的意思是系统已经完成了模式转换。 因为我的应用程序需要它来防止死锁和调整时间。(我有一个多线程引擎,当前不在消息pump thread上,导致模式随机更改时死锁)) 实际上,我让它等待1秒,继续处理消息泵线程上的消息,它工作了,但我想要更确定的东西,对我说“嘿,模式更改完成了,您现在处于全屏模式”。:D 有什么想法吗?有什么原因不能将渲染线程和消息泵线程作为同一个线程运行吗 根据文件,没有

这是我的问题。。。 有一种方法可以检查应用程序在DXGI(DX10/11)中何时全屏显示。 对于全屏显示,我的意思是系统已经完成了模式转换。 因为我的应用程序需要它来防止死锁和调整时间。(我有一个多线程引擎,当前不在消息pump thread上,导致模式随机更改时死锁)) 实际上,我让它等待1秒,继续处理消息泵线程上的消息,它工作了,但我想要更确定的东西,对我说“嘿,模式更改完成了,您现在处于全屏模式”。:D


有什么想法吗?

有什么原因不能将渲染线程和消息泵线程作为同一个线程运行吗

根据文件,没有任何东西可以告诉你变更已经完成


奇怪的是,DXGI依赖于从内部SendMessage调用(在多线程环境中通过消息泵发生)获取响应。所以我不知道延迟消息泵如何解决问题。它所要做的就是让DXGI在继续执行它的工作之前再等待一秒钟。死锁通常意味着您正在执行的操作会导致消息泵阻塞,等待渲染线程执行操作。

我不能在同一个线程上运行它们,因为我允许多个引擎和每个引擎的线程(其中一个是绘制线程(顺便说一句,在DX9模式下工作正常))。如果我等待模式更改完成,DXGI似乎不再处于死锁状态。(等等,我仍在处理消息,并在测试标志处于活动状态的情况下制作一个假礼物,持续一秒钟左右)与此同时,我找到了解决问题的另一个临时解决方案。我的任务计划程序将等待所有子线程完成,然后再继续其工作。使用WaitHandles和调用WaitAll()完成等待。我给这个调用设置了一个1秒的超时,如果调用失败(超过1秒),它将处理所有windows消息,然后重新启动等待。(这样一切正常)