请帮助。 我把这个结构放在任何方法中用于主ViewModel
Thread thread = new Thread(() =>
{
_visualizerService.ShowDialog(new PurchaseWindowViewModel());
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
我在PurchaseWindowViewModel.xaml.cs中有例外
发生了'System.InvalidOperationException'类型的异常 PresentationFramework.dll但未在用户代码中处理。额外 信息:无法访问Freezable对象 “Catel.Windows.Media.Effects.GrayscaleEffect”
通过线程,因为它不能被冻结。
答案 0 :(得分:3)
几乎不需要在单独的线程上创建窗口,只在边缘情况下“需要”。如果以下答案无法解决您的问题,请更新您的问题为什么要在非ui线程上使用窗口。
我建议您改用此代码:
await _visualizerService.ShowDialogAsync<PurchaseWindowViewModel>();
或非异步:
_visualizerService.ShowDialog<PurchaseWindowViewModel>();