だから私は.NET4.0で書かれたWPFアプリケーションを持っています。アプリケーションには、XMLファイルを検索するOpenFileDialogを実行するインポートボタンがあります。ファイルを開いた後、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行がアクティブにならないようにする方法はありますか?