Example #1
0
 public static void CheckGeneration(object sender, PingerEventArgs args)
 {
     foreach (var log in localLogs)//добавлять хосты в список и посылать одним письмом
     {
         if (log.Generation == 100)
         {
             MessageParams message = new MessageParams
             {
                 Body    = $"Хост: {log.Host.Name} с ip: {log.IpAddress} изменил статус на {(log.Delay > 0 ? "Работает" : "Не отвечает")}",
                 Caption = $"{ log.Host.Name} статус { (log.Delay > 0 ? "Работает" : "Не отвечает")}"
             };
             //emailSendAdapter.Send(message);       РАСКОМЕНТИТЬ КОГДА ГУГЛ ОДУМАЕТСЯ
         }
     }
 }
Example #2
0
        public static async void ResultToDataBase(object sender, PingerEventArgs args)
        {
            lock (lockObject)
            {
                if (count % 100 == 0)
                {
                    if (MonitorContext != null)
                    {
                        MonitorContext.Dispose();
                    }
                    count++;
                    GC.Collect();
                    MonitorContext = UpkServices.ServiceProvider.GetService <MonitorContext>();
                    MonitorContext.ChangeTracker.AutoDetectChangesEnabled = false;
                    MonitorContext.ChangeTracker.QueryTrackingBehavior    = QueryTrackingBehavior.NoTracking;
                    MonitorContext.ChangeTracker.LazyLoadingEnabled       = false;
                }
            }
            await MonitorContext.Logs.AddRangeAsync(args.PingResults);

            MonitorContext.SaveChanges();
        }
Example #3
0
        public static void CheckChanges(object sender, PingerEventArgs args)
        {
            List <Log> result = new List <Log>();

            if (localLogs == null)
            {
                localLogs = args.PingResults.ToList();
            }
            else
            {
                result = localLogs.Except(args.PingResults, new LogsComparer()).ToList();
            }
            foreach (var log in localLogs)//generation ставится ++ для всех. потом все отправляет в письме. Плохо. Можно generation сразу задать 11.
            {
                if (result.Exists(l => l.IpAddress == log.IpAddress))
                {
                    log.Generation = 0;
                }
                else
                {
                    log.Generation++;
                }
            }
        }