Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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;
        }