Beispiel #1
0
        /// <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");
            }
        }