这是我的主要方法的一部分:
[STAThread]
static void Main(string[] args)
{
#if !DEBUG
try
{
#endif
ApartmentState aps = System.Threading.Thread.CurrentThread.GetApartmentState();
//System.Threading.Thread.CurrentThread.SetApartmentState(ApartmentState.STA);
MessageBox.Show(aps.ToString());
消息显示MTA
。知道为什么或在哪里开始调查?
答案 0 :(得分:2)
你只是好奇,还是引起了一些其他问题?通常,如果您尝试在main方法中执行某些类型的COM交互,那么这只是一个问题。 Windows仍将在适当的ApartmentState中运行。
我最近没有检查,但过去不管属性如何,Visual Studio都强制使用MTA。您是否尝试从Visual Studio外部运行应用程序?
如果它只是调试器中的问题,请取消选中项目属性的Debug部分下的“启用Visual Studio主机进程”。
答案 1 :(得分:1)
此属性设置应用程序的COM线程模型。如果您的应用程序没有使用COM互操作,则它将无效。
来自MSDN,
COM线程模型仅适用于使用COM的应用程序 互操作。在不使用COM的应用程序中使用此属性 互操作没有效果。