在XNA中使用是否有任何负面影响?

我正在XNA上进行一个游戏,它有一个内置的编辑器。 为了方便FileOpenDialog ,我想使用Winforms中的FileOpenDialog 。 我按照这个答案按照说明。 这涉及到在我的Program类中设置[STAThread]属性。

使用STAThread有什么负面影响? 意思会导致更糟的performance还是以某种方式限制我?

STAThread属性用于向COM指示应用程序应使用单线程单元(STA)。 这只会影响COM对象 ,而且只有当某些使用COM的对话框(如FileOpenDialog )需要指定正确的线程模型时才是必需的。

据我所知,很less(如果有的话)游戏开发将使用COM除了Windows窗体对话框,所以这是不会有任何影响,它只需要这些对话框。

如果你使用COM对象,那么你可能想要查看COM线程模型,以充分理解这个设置的含义,但简短的版本是,在一个STA中,所有的COM方法将运行在单个线程(UI线程在这种情况下),即使它被另一个线程调用。

更新: DirectX 可用作一组COM对象 ,但是我不确定他们需要什么线程模型。