private void DoWork(Job job) { job.ReportVerboseMessage("Starting Work"); job.ReportProgress(0 , "Starting Work"); for (int i = 1; i <= 100; i++) { //check for cancel if (job.CancellationToken.IsCancellationRequested) { job.ReportVerboseMessage("Cancellation Completed"); return; } job.ReportVerboseMessage(string.Format("Starting Work on {0}", i)); System.Threading.Thread.Sleep(1000); for (int j = 0; j < 10; j++) { job.ReportVerboseMessage(string.Format("{0} - {1}", i, j)); System.Threading.Thread.Sleep(100); } job.ReportVerboseMessage(string.Format("Finsihed Work on {0}", i)); decimal percentComplete = (int)Math.Round((double)(100 * i) / 100); job.ReportProgress((int)percentComplete, string.Format("Completed Work on {0}", i)); System.Threading.Thread.Sleep(100); } job.ReportVerboseMessage("Finished Work"); System.Threading.Thread.Sleep(1000); }