Simple Progress reporting
suggest changeIProgress<T>
can be used to report progress of some procedure to another procedure. This example shows how you can create a basic method that reports its progress.
void Main() { IProgress<int> p = new Progress<int>(progress => { Console.WriteLine("Running Step: {0}", progress); }); LongJob(p); } public void LongJob(IProgress<int> progress) { var max = 10; for (int i = 0; i < max; i++) { progress.Report(i); } }
Output:
Running Step: 0 Running Step: 3 Running Step: 4 Running Step: 5 Running Step: 6 Running Step: 7 Running Step: 8 Running Step: 9 Running Step: 2 Running Step: 1
Note that when you this code runs, you may see numbers be output out of order. This is because the IProgress<T>.Report()
method is run asynchronously, and is therefore not as suitable for situations where the progress must be reported in order.
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents