誰かがこの動作を説明できるかどうかを見てみましょう。どうすればこの問題を解決できますか?私はWPF
アプリを持っていて、私のViewModelにはDispatcherTimer
があります。私は、モーダルウィンドウを表示するコマンドを持っているViewModelにでは、このような何か:私はボタンからこのコマンドを呼び出すとDispatcherTimerとShow Modal Window
private void ShowWindowCommandExecuted()
{
wnNewWindow window = new wnNewWindow();
window.ShowDialog();
}
、新しいウィンドウが示されており、DispatcherTimer
はバックグラウンドで動作を続けています。ここまでは順調ですね。私はこのようなDispatcherTimer
からウィンドウ表示するようにしようとすると、問題がされています。この場合、
DispatcherTimer timerInstrucciones;
timerInstrucciones = new DispatcherTimer();
timerInstrucciones.Interval = TimeSpan.FromMilliseconds(1000);
timerInstrucciones.Tick += (s, e) =>
{
wnNewWindow window = new wnNewWindow();
window.ShowDialog();
};
timerInstrucciones.Start();
を、新しいウィンドウも表示されますが、限り、それが表示されている、DispatcherTimer
は「カチカチ」を停止します。私はDispatcherTimer
がUIスレッドで実行されていることを理解していますが、なぜこの場合は別の方法で動作しますか?
後者の場合、Tickイベントハンドラをブロックしている点が異なります。 DispatcherTimerは、前のTickハンドラが実行を完了していない限り、別のTickイベントを続行して起動しません。 – Clemens
Ok @クレメンス、今私はそれを理解する!それは私には明らかだったはずです。それを解決する方法はありますか? – Pikoh
答えに示唆されているBeginInvokeソリューションを試しましたか? – Clemens