Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的C#应用程序运行在多线程单元上?_C#_.net_Visual Studio 2010 - Fatal编程技术网

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

为什么我的C#应用程序运行在多线程单元上?,c#,.net,visual-studio-2010,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(ApartmentSt

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

[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
。知道我应该从哪里开始调查吗?

此属性设置应用程序的COM线程模型。如果应用程序未使用COM互操作,则不会产生任何效果

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


你只是好奇,还是这引起了其他问题?通常,只有当您试图在主方法中执行某些类型的COM交互时,这才是一个问题。Windows仍将在相应的ApartmentState中运行

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


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

好吧,它对应用程序没有任何有用的影响-但线程仍应处于指定的单元状态。这会导致AxWebBrowser出现问题。是的,就是这样。现在,当处于释放模式时,它在STA上运行。谢谢很高兴我能帮忙。出于好奇,这是一个新项目还是从Visual Studio?.NET 4.0的早期版本转换而来的。我在VS 2010 Express上开始了这个项目,然后转向专业版,现在是终极版,因为BizSpark发布了:)。到目前为止,我还没有发现它更有用。