public EpgAutoAddDataAppend GetEpgAutoAddDataAppend(EpgAutoAddData master) { if (master == null) { return(null); } //データ更新は必要になったときにまとめて行う var dict = epgAutoAddAppendList ?? new Dictionary <uint, EpgAutoAddDataAppend>(); if (updateEpgAutoAddAppend == true) { List <EpgAutoAddData> srcList = epgAutoAddList.Values.Where(data => dict.ContainsKey(data.dataID) == false).ToList(); if (srcList.Count != 0) { List <EpgSearchKeyInfo> keyList = srcList.RecSearchKeyList().Clone(); keyList.ForEach(key => key.keyDisabledFlag = 0); //無効解除 try { var list_list = new List <List <EpgEventInfo> >(); cmd.SendSearchPgByKey(keyList, ref list_list); //通常あり得ないが、コマンド成功にもかかわらず何か問題があった場合は飛ばす if (srcList.Count == list_list.Count) { int i = 0; foreach (EpgAutoAddData item in srcList) { dict.Add(item.dataID, new EpgAutoAddDataAppend(list_list[i++])); } } epgAutoAddAppendList = dict; } catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace); } } updateEpgAutoAddAppend = false; updateEpgAutoAddAppendReserveInfo = true;//現時刻でのSearchList再作成も含む } //予約情報との突き合わせが古い場合 if (updateEpgAutoAddAppendReserveInfo == true) { ReloadReserveInfo();//notify残ってれば更新 foreach (EpgAutoAddDataAppend item in dict.Values) { item.UpdateCounts(); } updateEpgAutoAddAppendReserveInfo = false; } //SendSearchPgByKeyに失敗した場合などは引っかかる。 EpgAutoAddDataAppend retv; if (dict.TryGetValue(master.dataID, out retv) == false) { retv = new EpgAutoAddDataAppend(); } return(retv); }
public EpgAutoAddDataAppend GetEpgAutoAddDataAppend(EpgAutoAddData master) { if (master == null) return null; //データ更新は必要になったときにまとめて行う //未使用か、EpgAutoAddData更新により古いデータ廃棄済みでデータが無い場合 Dictionary<uint, EpgAutoAddDataAppend> dict = epgAutoAddAppendList; if (dict == null) { dict = new Dictionary<uint, EpgAutoAddDataAppend>(); List<EpgAutoAddData> srcList = epgAutoAddList.Values.ToList(); List<EpgSearchKeyInfo> keyList = srcList.RecSearchKeyList().Clone(); keyList.ForEach(key => key.keyDisabledFlag = 0); //無効解除 try { var list_list = new List<List<EpgEventInfo>>(); cmd.SendSearchPgByKey(keyList, ref list_list); //通常あり得ないが、コマンド成功にもかかわらず何か問題があった場合は飛ばす if (srcList.Count == list_list.Count) { int i = 0; foreach (EpgAutoAddData item in srcList) { dict.Add(item.dataID, new EpgAutoAddDataAppend(list_list[i++])); } } epgAutoAddAppendList = dict; } catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace); } updateAutoAddAppendReserveInfo = true; } //予約情報との突き合わせが古い場合 if (updateAutoAddAppendReserveInfo == true) { ReloadReserveInfo();//notify残ってれば更新 foreach (EpgAutoAddDataAppend item in dict.Values) item.UpdateCounts(); updateAutoAddAppendReserveInfo = false; } //SendSearchPgByKeyに失敗した場合などは引っかかる。 EpgAutoAddDataAppend retv; if (dict.TryGetValue(master.dataID, out retv) == false) { retv = new EpgAutoAddDataAppend(); } return retv; }