示例#1
0
        private void MonitorPageThread(string key, int startDelayMs = 0)
        {
            if (startDelayMs > 0)
            {
                Thread.Sleep(startDelayMs);
            }

            while (!Terminate &&
                   Monitoring.Get(key).Contains(Name))
            {
                WikiPage newPage = About();

                if (!newPage.RevisionDate.Equals(RevisionDate))
                {
                    // Event handler to alert the calling app that the list has changed.  --Kris
                    WikiPageUpdateEventArgs args = new WikiPageUpdateEventArgs
                    {
                        NewPage = newPage,
                        OldPage = this
                    };
                    OnPagesUpdated(args);
                }

                Thread.Sleep(Monitoring.Count() * MonitoringWaitDelayMS);
            }
        }
示例#2
0
        private void MonitorPageThread(string key, int startDelayMs = 0, int?monitoringDelayMs = null)
        {
            if (startDelayMs > 0)
            {
                Thread.Sleep(startDelayMs);
            }

            monitoringDelayMs = (monitoringDelayMs.HasValue ? monitoringDelayMs : Monitoring.Count() * MonitoringWaitDelayMS);

            while (!Terminate &&
                   Monitoring.Get(key).Contains(Name))
            {
                if (MonitoringExpiration.HasValue &&
                    DateTime.Now > MonitoringExpiration.Value)
                {
                    MonitorModel.RemoveMonitoringKey(key, Name, ref Monitoring);
                    Threads.Remove(key);

                    break;
                }

                while (!IsScheduled())
                {
                    if (Terminate)
                    {
                        break;
                    }

                    Thread.Sleep(15000);
                }

                if (Terminate)
                {
                    break;
                }

                WikiPage newPage;
                try
                {
                    newPage = About();

                    if (!newPage.RevisionDate.Equals(RevisionDate))
                    {
                        // Event handler to alert the calling app that the list has changed.  --Kris
                        WikiPageUpdateEventArgs args = new WikiPageUpdateEventArgs
                        {
                            NewPage = newPage,
                            OldPage = this
                        };
                        OnPagesUpdated(args);
                    }
                }
                catch (Exception) when(!BreakOnFailure)
                {
                }

                Wait(monitoringDelayMs.Value);
            }
        }
示例#3
0
 private void C_PageUpdated(object sender, WikiPageUpdateEventArgs e)
 {
     PageUpdated = true;
 }
示例#4
0
 internal virtual void OnPagesUpdated(WikiPageUpdateEventArgs e)
 {
     PageUpdated?.Invoke(this, e);
 }