Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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
Wpf STAThread方法属性和线程单元状态之间有什么区别?_Wpf_.net 4.0_Thread Safety - Fatal编程技术网

Wpf STAThread方法属性和线程单元状态之间有什么区别?

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

我想我对何时需要statthread有一个基本的了解,但是下面的方法有什么问题

当创建一个新线程时,单元状态被设置,我没有得到任何问题,但是当我用STAThread属性修饰方法时,我得到一个异常,声明需要一个STA线程

[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=0x80131501
Message='type上构造函数的调用 “System.Windows.Controls.UserControl”匹配指定的 绑定约束引发异常。“行号“4”和“行” 位置“6”

>内部异常1:InvalidOperationException:调用线程必须 请选择STA,因为许多UI组件都需要它。

请参见
STAThread上的​属性
页面:

将此属性应用于入口点方法(C#和Visual Basic中的
Main()
方法)。它对其他方法没有影响。要设置在代码中启动的线程的单元状态,请在启动线程之前使用Thread.SetApartmentState或Thread.TrySetApartmentState方法

我被误导了,这给人的印象是它可以应用于非入口点方法