Beispiel #1
0
        private void MonitorPagesThread(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(Subreddit))
            {
                List <string> oldList = pages;
                List <string> newList = GetPages();

                if (Lists.ListDiff(oldList, newList, out List <string> added, out List <string> removed))
                {
                    // Event handler to alert the calling app that the list has changed.  --Kris
                    WikiPagesUpdateEventArgs args = new WikiPagesUpdateEventArgs
                    {
                        NewPages = newList,
                        OldPages = oldList,
                        Added    = added,
                        Removed  = removed
                    };
                    OnPagesUpdated(args);
                }

                Thread.Sleep(monitoringDelayMs.Value);
            }
        }
Beispiel #2
0
 // When a new wiki page is detected in MonitorPages, this method will add it/them to the list.  --Kris
 private void C_PagesUpdated(object sender, WikiPagesUpdateEventArgs e)
 {
     foreach (string page in e.Added)
     {
         if (!Pages.ContainsKey(page))
         {
             Pages.Add(page, true);
         }
     }
 }
Beispiel #3
0
        private void MonitorPagesThread(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(Subreddit))
            {
                if (MonitoringExpiration.HasValue &&
                    DateTime.Now > MonitoringExpiration.Value)
                {
                    MonitorModel.RemoveMonitoringKey(key, Subreddit, ref Monitoring);
                    Threads.Remove(key);

                    break;
                }

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

                    Thread.Sleep(15000);
                }

                if (Terminate)
                {
                    break;
                }

                List <string> oldList;
                List <string> newList;
                try
                {
                    oldList = pages;
                    newList = GetPages();
                    if (Lists.ListDiff(oldList, newList, out List <string> added, out List <string> removed))
                    {
                        // Event handler to alert the calling app that the list has changed.  --Kris
                        WikiPagesUpdateEventArgs args = new WikiPagesUpdateEventArgs
                        {
                            NewPages = newList,
                            OldPages = oldList,
                            Added    = added,
                            Removed  = removed
                        };
                        OnPagesUpdated(args);
                    }
                }
                catch (Exception) when(!BreakOnFailure)
                {
                }

                Wait(monitoringDelayMs.Value);
            }
        }
Beispiel #4
0
 internal virtual void OnPagesUpdated(WikiPagesUpdateEventArgs e)
 {
     PagesUpdated?.Invoke(this, e);
 }