Пример #1
0
        }     // BeginLoadEpgPrograms

        private void LoadEpgPrograms(LoadEpgProgramsData data)
        {
            var programs = Datastore.GetPrograms(data.FullServiceName, LocalReferenceTime, 1, 2);

            // try alternate service if no EPG data
            if ((programs == null) && (data.FullAlternateServiceName != null))
            {
                programs = Datastore.GetPrograms(data.FullAlternateServiceName, LocalReferenceTime, 1, 2);
            } // if

            // populate data
            if (programs != null)
            {
                var epgPrograms = new EpgProgram[4];
                epgPrograms[0] = programs.Requested?.Previous?.Program;
                epgPrograms[1] = programs.Requested?.Program;
                var next = programs.Requested?.Next;
                epgPrograms[2] = next?.Program;
                next           = next?.Next;
                epgPrograms[3] = next?.Program;

                data.EpgPrograms = epgPrograms;
            } // if

            if (InvokeRequired)
            {
                BeginInvoke(new Action <LoadEpgProgramsData>(LoadEpgProgramsEnded), data);
            }
            else
            {
                LoadEpgProgramsEnded(data);
            } // if-else
        }     // LoadEpgPrograms
Пример #2
0
        } // buttonRecordChannel_Click

        #endregion

        #region Auxiliary methods

        private void BeginLoadEpgPrograms(bool async)
        {
            if (IsDisabled)
            {
                return;
            }
            if (CurrentRequestId == int.MaxValue)
            {
                CurrentRequestId = 0;
            }

            if (async)
            {
                timerLoadingData.Enabled = false;
                timerLoadingData.Enabled = true;
            } // if

            // TODO: do NOT assume .imagenio.es
            var fullServiceName          = SelectedService.ServiceName + ".imagenio.es";
            var fullAlternateServiceName = SelectedService.ReplacementService?.ServiceName + ".imagenio.es";

            var data = new LoadEpgProgramsData()
            {
                RequestId                = Interlocked.Increment(ref CurrentRequestId),
                FullServiceName          = fullServiceName,
                FullAlternateServiceName = fullAlternateServiceName,
                ReferenceTime            = this.LocalReferenceTime
            };

            if (async)
            {
                ThreadPool.QueueUserWorkItem((o) => LoadEpgPrograms(data), null);
            }
            else
            {
                LoadEpgPrograms(data);
            } // if-else
        }     // BeginLoadEpgPrograms
Пример #3
0
        }     // LoadEpgPrograms

        private void LoadEpgProgramsEnded(LoadEpgProgramsData data)
        {
            try
            {
                // ignore data if not from current request
                // as data is loading async, "old" load request may arrive if channel is quickly changed
                if (data.RequestId != CurrentRequestId)
                {
                    return;
                }

                timerLoadingData.Enabled = false;
                SetAutoRefreshTimer(true);

                EpgPrograms            = data.EpgPrograms;
                buttonFullView.Enabled = (EpgPrograms != null);

                DisplayEpgProgram((data.EpgPrograms != null)? 1 : 0);
            }
            catch (Exception ex)
            {
                HandleException(new ExceptionEventData(ex));
            } // try-catch
        }     // DisplayEpgPrograms