Async Concepts
Progress Updates
Track progress after each completed step.
async
Async operations often report progress between awaits so the caller can update the user interface.
Progress Updates
ProgressUpdates.cs
Replay: real traced execution (multi-file project)
using System;
class Program
{
static void Main()
{
int steps = 3;
int percent = 0;
for (int current = 1; current <= steps; current++)
{
percent = current * 100 / steps;
Console.WriteLine($"step={current}, percent={percent}");
}
Console.WriteLine($"final={percent}");
}
}
using System;
class Program
{
static void Main()
{
int steps = 1;
int percent = 0;
for (int current = 1; current <= steps; current++)
{
percent = current * 100 / steps;
Console.WriteLine($"step={current}, percent={percent}");
}
Console.WriteLine($"final={percent}");
}
}
using System;
class Program
{
static void Main()
{
int steps = 5;
int percent = 0;
for (int current = 1; current <= steps; current++)
{
percent = current * 100 / steps;
Console.WriteLine($"step={current}, percent={percent}");
}
Console.WriteLine($"final={percent}");
}
}
steps ← 3, percent ← 0
4{5 static void Main()6 {7 int steps→ 3 = 3; //@steps=1, 58 int percent→ 0 = 0;percent ← 33
pass 1 of 310for (int current1 = 1; current <= steps3; current++)11{12 percent→ 33 = current1 * 100 / steps3;13 Console.WriteLine($"step={current1}, percent={percent33}");14}outputstep=1, percent=33All 3 passes — pass 1 is the card above pass currentpercent1 1 33 2 2 66 3 3 100 Console.WriteLine($"final={percent}");
16 Console.WriteLine($"final={percent100}");17}outputfinal=100
steps ← 1, percent ← 0
4{5 static void Main()6 {7 int steps→ 1 = 1;8 int percent→ 0 = 0;percent ← 100
10for (int current1 = 1; current <= steps1; current++)11{12 percent→ 100 = current1 * 100 / steps1;13 Console.WriteLine($"step={current1}, percent={percent100}");14}outputstep=1, percent=100Console.WriteLine($"final={percent}");
16 Console.WriteLine($"final={percent100}");17}outputfinal=100
steps ← 5, percent ← 0
4{5 static void Main()6 {7 int steps→ 5 = 5;8 int percent→ 0 = 0;percent ← 20
pass 1 of 510for (int current1 = 1; current <= steps5; current++)11{12 percent→ 20 = current1 * 100 / steps5;13 Console.WriteLine($"step={current1}, percent={percent20}");14}outputstep=1, percent=20All 5 passes — pass 1 is the card above pass currentpercent1 1 20 2 2 40 3 3 60 4 4 80 5 5 100 Console.WriteLine($"final={percent}");
16 Console.WriteLine($"final={percent100}");17}outputfinal=100