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



所以我有一个用.NET 4.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 毫秒,该怎么办?然后仍然会出现旧问题。我知道我可以增加睡眠定时器,但我相信一定有更好的方法。有没有办法让它在第一行完成后才激活最后 2 行?

从未听说过Save是异步的,作为最后的手段,您可以使用FileSystemWatcher来监视受影响的文件,并在没有更多更改时调用代码。

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

最新更新