为什么我的C#应用​​程序在多线程单元中运行?

时间:2011-09-02 05:13:05

标签: c# .net visual-studio-2010

这是我的主要方法的一部分:

[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。知道为什么或在哪里开始调查?

2 个答案:

答案 0 :(得分:2)

你只是好奇,还是引起了一些其他问题?通常,如果您尝试在main方法中执行某些类型的COM交互,那么这只是一个问题。 Windows仍将在适当的ApartmentState中运行。

我最近没有检查,但过去不管属性如何,Visual Studio都强制使用MTA。您是否尝试从Visual Studio外部运行应用程序?

如果它只是调试器中的问题,请取消选中项目属性的Debug部分下的“启用Visual Studio主机进程”。

答案 1 :(得分:1)

此属性设置应用程序的COM线程模型。如果您的应用程序没有使用COM互操作,则它将无效。

来自MSDN

  

COM线程模型仅适用于使用COM的应用程序   互操作。在不使用COM的应用程序中使用此属性   互操作没有效果。