Wpf 将操作延迟到上一个操作完成之后?

Wpf 将操作延迟到上一个操作完成之后?,wpf,.net-4.0,Wpf,.net 4.0,所以我有一个用.NET4.0编写的WPF应用程序。在应用程序中,有一个导入按钮,用于执行OpenFileDialog搜索XML文件。打开文件后,它读取XML,从中检索数据并将其存储在Properties.Settings.Default中。基本上,这是一个人们可以导出和导入设置的系统。很好用 现在,我想做的是,在导入之后,它保存新设置,然后终止应用程序并重新启动它。简单,保存设置,启动应用程序的新实例,杀死旧实例 Properties.Settings.Default.Save(); Syste

所以我有一个用.NET4.0编写的WPF应用程序。在应用程序中,有一个导入按钮,用于执行OpenFileDialog搜索XML文件。打开文件后,它读取XML,从中检索数据并将其存储在Properties.Settings.Default中。基本上,这是一个人们可以导出和导入设置的系统。很好用

现在,我想做的是,在导入之后,它保存新设置,然后终止应用程序并重新启动它。简单,保存设置,启动应用程序的新实例,杀死旧实例

Properties.Settings.Default.Save();
System.Diagnostics.Process.Start(Application.ResourceAssembly.Location);
System.Diagnostics.Process.GetCurrentProcess().Kill();
但是,问题是,应用程序的新实例通常在设置完成保存之前启动。因此,新实例开始检索旧设置。我想我可以通过在这个过程中加入一个简单的睡眠来解决这个问题;但这是非常令人讨厌的

System.Threading.Thread.Sleep(1000);

如果保存过程耗时超过1000毫秒怎么办?那么老问题仍然存在。我知道我可以增加睡眠时间,但我相信一定有更好的方法。是否有办法使最后两行在第一行完成后才激活?

为什么不让您的保存方法在保存完成后执行返回,或者让它调用流程开始。在这种情况下,在第一次保存完成之前,您应该无法启动应用程序。

从来没有听说过
Save
是异步的,作为最后手段,您可以使用监控受影响的文件,并在不再对其进行更改时调用您的代码。

这不是他的保存方法,而是。您是正确的,它不是异步的。事实证明,当我在应用程序上运行Process.Start时,它不会在与F5调试目录相同的目录中启动它,因此它没有使用保存的设置。