0

所以我有一个用 .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();

然而,问题是应用程序的新实例的启动通常是在设置完成保存之前。所以新实例开始检索旧设置。我想我可以通过在进程中添加一个简单的睡眠来解决这个问题;但这非常hacky。

System.Threading.Thread.Sleep(1000);

如果保存过程需要超过 1000 毫秒怎么办?然后老问题仍然存在。我知道我可以增加睡眠定时器,但我确信必须有更好的方法。有没有办法让最后两行直到第一行完成后才激活?

4

2 回答 2

1

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

于 2012-08-16T00:51:27.500 回答
0

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

于 2012-08-16T00:44:49.000 回答