public bool ImportFrom(string dirPath) { if (!MemoDataFolderSync.ContainsMemo(dirPath)) { MessageBox.Show( _app.MainForm, "ノートデータが格納されていないフォルダからはインポートできません。", "インポートエラー" ); return(false); } if (MemoDataFolderSync.ExistsLockFile(dirPath)) { MessageBox.Show( _app.MainForm, "他のMochaNoteが使用中のノート格納フォルダからはインポートできません。", "インポートエラー" ); return(false); } var ret = MessageBox.Show( _app.MainForm, "\"" + dirPath + "\"からのインポートを実行してもよろしいですか。", "インポートの確認", MessageBoxButtons.YesNo ); if (ret == DialogResult.No) { MessageBox.Show( _app.MainForm, "インポートを中止しました。", "インポートの中止" ); return(false); } _app.SaveAllMemos(); _app.SaveRecentIds(); _app.SaveFusenFormIds(); _app.MainForm.SaveFormSettings(_app._WindowSettings); MemopadSettings.SaveSettings(_app._Settings); MemopadWindowSettings.SaveWindowSettings(_app._WindowSettings); _app.BootstrapSettings.LastImportDirectory = dirPath; _app.SaveBootstrapSettings(); _app.CloseConnections(); log4net.LogManager.Shutdown(); var dialog = new ProgressDialog(); dialog.Text = "インポートの進捗"; dialog.SupportCancel = false; dialog.Font = _app.Theme.CaptionFont; dialog.BackgroundWorker.DoWork += DoImportAsync; dialog.BackgroundWorker.RunWorkerCompleted += (sender, e) => { if (e.Error != null) { MessageBox.Show(_app.MainForm, "インポートに失敗しました。", "インポートエラー"); } else if (e.Cancelled) { MessageBox.Show(_app.MainForm, "インポートをキャンセルしました。", "インポートのキャンセル"); } dialog.Close(); dialog.Dispose(); /// インポート前のmemoinfosなどが上書きされないように /// 終了時のSaveAll()を防ぐ _app._PreventSaveAll = true; Application.Restart(); }; dialog.Run(_app.MainForm, dirPath); return(true); }