猿问

vs2010 rc 调试winform怎么总是 MTA呢?

main() 前面有 [STAThread]

 

            Thread.CurrentThread.ApartmentState = ApartmentState.STA;

            Debug.WriteLine(Thread.CurrentThread.ApartmentState);

            Thread.CurrentThread.SetApartmentState(ApartmentState.STA);

            Debug.WriteLine(Thread.CurrentThread.GetApartmentState());

Thread.CurrentThread.ApartmentState = ApartmentState.STA;           Debug.WriteLine(Thread.CurrentThread.ApartmentState);

// 这里还是显示是 MTA

Thread.CurrentThread.SetApartmentState(ApartmentState.STA);          

// 这里会出异常:Failed to set the specified COM apartment state.

Debug.WriteLine(Thread.CurrentThread.GetApartmentState());

// 把上面那行去掉,这里还是显示 MTA

if (openFileDialog.ShowDialog() == DialogResult.OK)

// 异常:Current thread must be set to single thread apartment (STA) mode before OLE calls can be made. Ensure that your Main function has STAThreadAttribute marked on it. This exception is only raised if a debugger is attached to the process.

这是为什么呢?


收到一只叮咚
浏览 554回答 2
2回答

侃侃尔雅

这样设置试试看!![STAThread]    static void Main() Thread  app  =  new  Thread(new  ParameterizedThreadStart(ThreadMethod));  app.ApartmentState  =  ApartmentState.STA;  或Thread newThread = new Thread(new ThreadStart(ThreadMethod)); newThread.SetApartmentState(ApartmentState.MTA);
随时随地看视频慕课网APP
我要回答