//Code to show a control goes here
var DispatcherOperation = this.ParentWindow.Dispatcher.BeginInvoke((Action)(() =>
{
//Do stuff
}));
DispatcherOperation.Completed += (s, e) =>
{
if (DispatcherOperation.Status == System.Windows.Threading.DispatcherOperationStatus.Completed)
{
//Code to hide control shown above goes here
}
};
我想要的是在需要完成的工作正在工作時顯示某個控件,然後在完成時隱藏該控件(將顯示新的東西)。這基本上就像一個加載算法,我猜。調度員完成的事件不按預期方式工作
我對Dispatcher方法BeginInvoke
的理解是它用於異步執行UI操作。然而,當我運行這個時,看起來整個應用程序凍結,而調度員調用該函數。結果是我試圖展示的控制從未實際顯示。
這是爲什麼?
這是完全顛倒 –
***我想從來沒有真正顯示控件顯示***你應該添加實際的代碼,以顯示你的控制,從目前的評論來看,它顯示的地方仍然令人困惑。 –
您可能正在UI線程上執行長時間運行的操作,從而阻止UI線程執行消息泵和更新。只調用分派器上的UI更改,在單獨的「Task」(最好)或線程中運行長時間運行的操作。 –