protected void ReportProgress(int percentComplete, string message, params object[] args) { OnDownloadProgressChanged(new DownloadProgressEventArgs() { PercentComplete = percentComplete, Message = String.Format(message, args) }); // if there are no other tasks to do we can reset counters lock (_syncRoot) { if (_tasksCount == _tasksDone) ResetTasks(); } }