2016-01-21 68 views
0

請幫助。 我把這種結構在任何方法來主視圖模型Catel在ViewModel中顯示對話窗口

Thread thread = new Thread(() => 
{ 
    _visualizerService.ShowDialog(new PurchaseWindowViewModel()); 
}); 

thread.SetApartmentState(ApartmentState.STA); 
thread.Start(); 

,我已經在PurchaseWindowViewModel.xaml.cs例外

「System.InvalidOperationException」類型的異常出現在 PresentationFramework.dll但沒有在用戶代碼中處理。其他 信息:不能訪問對象可凍結 「Catel.Windows.Media.Effects.GrayscaleEffect」

通過線程,因爲它不能被凍結。

回答

3

在單獨的線程上創建窗口幾乎不需要,只在邊緣情況下「需要」。如果以下答案無法解決您的問題,請更新您的問題爲什麼您要在非用戶界面上使用窗口。

我建議您使用此代碼來代替:

await _visualizerService.ShowDialogAsync<PurchaseWindowViewModel>();

或非異步:

_visualizerService.ShowDialog<PurchaseWindowViewModel>();

+1

謝謝回答。我發現我的錯誤。我從System.timers事件處理程序調用對話窗口。我改變了DispatcherTimer的定時器,並且所有的工作。 –