Wpf STAThread方法属性和线程单元状态之间有什么区别?
我想我对何时需要statthread有一个基本的了解,但是下面的方法有什么问题 当创建一个新线程时,单元状态被设置,我没有得到任何问题,但是当我用STAThread属性修饰方法时,我得到一个异常,声明需要一个STA线程Wpf STAThread方法属性和线程单元状态之间有什么区别?,wpf,.net-4.0,thread-safety,Wpf,.net 4.0,Thread Safety,我想我对何时需要statthread有一个基本的了解,但是下面的方法有什么问题 当创建一个新线程时,单元状态被设置,我没有得到任何问题,但是当我用STAThread属性修饰方法时,我得到一个异常,声明需要一个STA线程 [STAThread] public void DoSomething() { //Does something } VS public void DoSomething() { Thread thread = new Thread(new ThreadStar
[STAThread]
public void DoSomething()
{
//Does something
}
VS
public void DoSomething()
{
Thread thread = new Thread(new ThreadStart(() => //Does Something );
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
System.Windows.Markup.XamlParseException HResult=0x80131501Message='type上构造函数的调用 “System.Windows.Controls.UserControl”匹配指定的 绑定约束引发异常。“行号“4”和“行” 位置“6” >内部异常1:InvalidOperationException:调用线程必须 请选择STA,因为许多UI组件都需要它。 请参见
STAThread上的属性
页面:
将此属性应用于入口点方法(C#和Visual Basic中的Main()
方法)。它对其他方法没有影响。要设置在代码中启动的线程的单元状态,请在启动线程之前使用Thread.SetApartmentState或Thread.TrySetApartmentState方法
我被误导了,这给人的印象是它可以应用于非入口点方法