void DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; while (true) { if (worker.CancellationPending) { e.Cancel = true; break; } try { string content = _client.DownloadString(_task.Url); _log.DebugFormat("{0}, access success.", _task.Url); } catch (Exception ex) { _log.ErrorFormat("{0} - {1}", _task.Url, ex.ToString()); } Thread.Sleep((int)(_task.Interval * 1000)); } }