簡體   English   中英

從WPF應用程序調用分派器時失敗

[英]Failure when calling Dispatcher from WPF application

我有一個WPF MVVM應用程序,該應用程序在不同的線程上運行一些邏輯,然后當我想進行UI更新(隱藏主窗口)時,我調用Dispatcher.BeginInvoke()方法並得到以下錯誤:

“必須在與DependencyObject相同的線程上創建DependencySource”。

有什么想法嗎?

編輯:

以下代碼在后台線程上運行(忽略丑陋的代碼,因為這只是為了演示問題):在SomeWizardPage構造函數中,我正在創建BitmapImage類的新實例並將其設置為綁定到UI的屬性-這是是什么導致失敗。 當我從構造函數中注釋掉image屬性的初始化時,不會引發異常。

Main.CurrentViewModel = new SomeWizardPage();
if (Main.MainWindow.Dispatcher.CheckAccess())
{

}
else
{
    Main.MainWindow.Dispatcher.Invoke(DispatcherPriority.Render, new Action(() =>
    {
        Main.MainWindow.Hide();
    }));
}

有人可以解釋這種行為嗎? 我該如何解決?

BitmapImage是一個DependencyObject 您不能從后台線程實例化它。

https://msdn.microsoft.com/zh-CN/library/system.windows.media.imaging.bitmapimage%28v=vs.110%29.aspx

如果您正在關注MVVM,則也不需要。 BitmapImage屬於視圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM