// スレッド一覧のインデックスを保存。壊れていることがたまにあるので、再生成できるようにする private void SaveThreadListIndices() { try { GotThreadListIndexer.Write(Cache, headerInfo); } catch (XmlException ex) { if (ex.Message.IndexOf("ルート要素が見つかりません") >= 0) { DialogResult r = MessageBox.Show( headerInfo.BoardInfo.Name + "板のインデックスが壊れています。今すぐ再生成しますか?\r\n(やたら時間かかる場合があります)", "インデックスなんだよ〜", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (r == DialogResult.Yes) { try { ClientBase.Stopper.Reset(); ThreadIndexer.Indexing(Cache, headerInfo.BoardInfo); } finally { ClientBase.Stopper.Set(); } } } } }
/// <summary> /// ログの移転と、古い板に移転履歴を残す /// </summary> /// <param name="oldBoard移転元の板</param> /// <param name="newBoard">移転先の板</param> public void Replace(BoardInfo oldBoard, BoardInfo newBoard) { if (oldBoard == null) { throw new ArgumentNullException("oldBoard"); } if (newBoard == null) { throw new ArgumentNullException("newBoard"); } // dat落ちスレと生きているスレを分離 //List<ThreadHeader> leaveItems, liveItems; //Separate(oldBoard, newBoard, out leaveItems, out liveItems); //// 既得インデックスを更新 //GotThreadListIndexer.Write(cache, oldBoard, leaveItems); //GotThreadListIndexer.Write(cache, newBoard, liveItems); ThreadIndexer.Indexing(cache, newBoard); /* * // 移転前の既得ログを取得 * List<ThreadHeader> gotItems = GotThreadListIndexer.Read(cache, oldBoard); * * // 新しい板情報に変更 * foreach (ThreadHeader h in gotItems) * h.BoardInfo = newBoard; * * // 新しい板に既得インデックスを作成 * GotThreadListIndexer.Write(cache, newBoard, gotItems); * * // ログも移動 * CopyDatFiles(oldBoard, newBoard); */ }