/// <summary> /// Run service / maintenance. /// Fetches new posts deletes too old ones /// </summary> /// <returns></returns> public async Task RunAsync() { Trace.WriteLine("NewsService, RunAsync"); if (!_running) { Trace.WriteLine("NewsService, start"); _running = true; Maintenance m = new Maintenance { StartTime = DateTime.UtcNow, EndTime = DateTime.MaxValue, Success = false }; _repo.Insert <Maintenance>(m); await _repo.CommitAsync(); try { m.Inserted = await insert(); Trace.WriteLine("NewsService, inserted:" + m.Inserted.ToString()); if (m.Inserted > 0) { m.Deleted = await delete(); Trace.WriteLine("NewsService, deleted:" + m.Deleted.ToString()); } m.Success = true; } catch (Exception e) { Trace.WriteLine("NewsService, exception:" + e.Message); m.Exception = e.Message; } m.EndTime = DateTime.UtcNow; _repo.Update <Maintenance>(m); await _repo.CommitAsync(); _running = false; Trace.WriteLine("NewsService, end"); } }