Async Concepts
Task Status Model
Model the status values a task-like operation can report.
async
Async work has states. A program often branches based on whether work is still running or already complete.
Task Status Model
TaskStatusModel.cs
Replay: real traced execution (multi-file project)
using System;
class Program
{
static void Main()
{
string status = "waiting";
bool canAwait = status == "waiting" || status == "running";
bool isDone = status == "completed";
Console.WriteLine($"status={status}");
Console.WriteLine($"canAwait={canAwait}");
Console.WriteLine($"isDone={isDone}");
}
}
using System;
class Program
{
static void Main()
{
string status = "running";
bool canAwait = status == "waiting" || status == "running";
bool isDone = status == "completed";
Console.WriteLine($"status={status}");
Console.WriteLine($"canAwait={canAwait}");
Console.WriteLine($"isDone={isDone}");
}
}
using System;
class Program
{
static void Main()
{
string status = "completed";
bool canAwait = status == "waiting" || status == "running";
bool isDone = status == "completed";
Console.WriteLine($"status={status}");
Console.WriteLine($"canAwait={canAwait}");
Console.WriteLine($"isDone={isDone}");
}
}
status ← waiting, canAwait ← True, isDone ← False
4{5 static void Main()6 {7 string status→ waiting = "waiting"; //@status="running", "completed"8 bool canAwait→ True = statuswaiting == "waiting" || status == "running";9 bool isDone→ False = statuswaiting == "completed";1011 Console.WriteLine($"status={statuswaiting}");12 Console.WriteLine($"canAwait={canAwaitTrue}");13 Console.WriteLine($"isDone={isDoneFalse}");14 }outputstatus=waiting canAwait=True isDone=False
status ← running, canAwait ← True, isDone ← False
4{5 static void Main()6 {7 string status→ running = "running";8 bool canAwait→ True = statusrunning == "waiting" || status == "running";9 bool isDone→ False = statusrunning == "completed";1011 Console.WriteLine($"status={statusrunning}");12 Console.WriteLine($"canAwait={canAwaitTrue}");13 Console.WriteLine($"isDone={isDoneFalse}");14 }outputstatus=running canAwait=True isDone=False
status ← completed, canAwait ← False, isDone ← True
4{5 static void Main()6 {7 string status→ completed = "completed";8 bool canAwait→ False = statuscompleted == "waiting" || status == "running";9 bool isDone→ True = statuscompleted == "completed";1011 Console.WriteLine($"status={statuscompleted}");12 Console.WriteLine($"canAwait={canAwaitFalse}");13 Console.WriteLine($"isDone={isDoneTrue}");14 }outputstatus=completed canAwait=False isDone=True