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); РАСКОМЕНТИТЬ КОГДА ГУГЛ ОДУМАЕТСЯ } } }
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(); }
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++; } } }