所以我有一个用.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毫秒怎么办?然后旧问题仍然存在。我知道我可以增加睡眠计时器,但我确信必须有更好的方法。有没有办法让它最后两行不会激活,直到第一行完成后?
答案 0 :(得分:1)
从未听说Save
是异步的,作为最后的手段,您可以使用FileSystemWatcher
来监控受影响的文件,并在没有更多更改时调用您的代码。
答案 1 :(得分:0)
为什么不让save方法在保存完成后执行返回或让它调用Process Start。在这种情况下,你不应该能够启动应用程序,直到第一个完成保存