private void Worker() { DateTime dtNextScan = DateTime.Now; // tsDelay = new TimeSpan(_finder.RepeatSearch, 0, 0); while (true) { while (_finder == null) { try { Thread.Sleep(5000); _finder = new Finder(); _finder.NewResults += new Finder.NewResultsCallback(_finder_NewResults); Log.Info("Start searching programs database"); } catch (Exception e) { Log.Warn("caught excption: " + e.Message); Log.Info(e.StackTrace); _finder = null; Thread.Sleep(500); } } try { if (DateTime.Now >= dtNextScan) { _finder.FindPrograms(); dtNextScan += new TimeSpan(_finder.RepeatSearch, 0, 0); Log.Info("Done searching programs database, next scan will be at " + dtNextScan.ToString()); } else UpdateIsRunning(); } catch (Exception e) { Log.Warn("caught excption: " + e.Message); Log.Info(e.StackTrace); _finder = null; } Thread.Sleep(15000); } }