STA-Thread - 例外

时间:2016-08-30 14:07:28

标签: c# wpf multithreading mvvm

我有一个线程有一个打印作业,它创建一个View和它的ViewModel并初始化它们。

没有主题:

ViewModel具有一些绑定,并在将其提供给View后正确初始化。

//MyView : UserControl
//Constructor
DataContext = vm;
InitializeComponent();

使用主题:

InitializeComponent()期间抛出异常。

我已经在这里检查了答案并且谷歌为它找到了它,并且发现只有“通常”错误 - 没有在STA中运行线程。这似乎不适用于我的代码。

//Join thread if valid
//set to null
PrintThread = new Thread(new ParameterizedThreadStart(ExecutePrintJob));
PrintThread.SetApartmentState(ApartmentState.STA);
PrintThread.Start(); //Takes parameter but unused at the moment


//Translated it
Exception thrown: 'System.Windows.Markup.XamlParseException' in PresentationFramework.dll
Additional information: Line number "25" und Line position "43" from "An exception occured during the initialization of "System.Windows.Controls.Label.".


<Label  Content="TextBox --->"
        Grid.Column="0" Grid.Row="0"
        VerticalAlignment="Center" HorizontalAlignment="Center" />

在另一个线程(不是任务)中使用它时,什么可能抛出System.Windows.Markup.XamlParseException?我不知道如何解决这个问题,已经问了几个人。

1 个答案:

答案 0 :(得分:0)

很好地查看您用于打印的组件的异常将使用作为UI组件的“System.Windows.Controls.Label”,因此它应该在主UI线程上实例化。我会尝试在该线程上编组调用。我在一个类似的问题中运行(即使在不同的上下文中)并且我在这里发布了我的解决方案,我希望它有所帮助:

Why WPF button's command's CanExecute method is not called even if I call CommandManager.InvalidateRequerySuggested()?