/// <summary> /// 指定した板のインデックスを作成し直す /// </summary> /// <param name="cache"></param> /// <param name="board"></param> public static void Indexing(Cache cache, BoardInfo board) { OfflineThreadListReader reader = new OfflineThreadListReader(cache); List <ThreadHeader> items = new List <ThreadHeader>(); if (reader.Open(board)) { // ローカルに存在するすべてのファイルを読み込む while (reader.Read(items) != 0) { ; } reader.Close(); // サーバー情報をすべて書き換える foreach (ThreadHeader h in items) { h.BoardInfo.Server = board.Server; ThreadIndexer.SaveServerInfo(cache, h); } // 読み込んだスレッド情報を元に既得インデックス一覧を作成 GotThreadListIndexer.Write(cache, board, items); } }
// スレッド一覧のインデックスを保存。壊れていることがたまにあるので、再生成できるようにする 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(); } } } } }