gpt4 book ai didi

c# - 任务中的 ShowDialog 方法

转载 作者:太空宇宙 更新时间:2023-11-03 10:52:44 26 4
gpt4 key购买 nike

我在 WPF 应用程序中使用线程和 Dispatcher 事件。在此我使用 ShowDialog() 方法打开新窗口 mywindow。我只想在 mywindow 对话框关闭后在“continuewith”事件中执行 loadData() 方法。我怎样才能做到这一点?现在 LoadData 方法在关闭 mywindow 对话框之前执行。

Thread thread = new Thread(() =>
{
Application.Current.Dispatcher.BeginInvoke( new Action( () =>
{
Window mywindow = new Window();
mywindow.ShowDialog();
} ) );
}.ContinueWith( ( test ) =>
{
LoadData();
} ) );

最佳答案

您正在使用 BeginInvoke 在 UI 调度程序上执行异步调用因此,任务甚至在等待对话窗口出现之前就已完成。

您应该使用 Invoke 进行同步调用除非对话窗口打开,否则任务不会完成。

Application.Current.Dispatcher.Invoke(new Action(() =>
{
Window mywindow = new Window();
mywindow.ShowDialog();
}

在旁注中,我认为您错误地粘贴了 Thread,它应该是 Task

        Task thread =Task.Factory.StartNew(() =>
{
Application.Current.Dispatcher.Invoke(new Action(() =>
{
SecondaryWindow mywindow = new SecondaryWindow(new VM());
mywindow.ShowDialog();
}));
}).ContinueWith((test) =>
{
LoadData();
});

关于c# - 任务中的 ShowDialog 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20814448/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com