Replay one C# execution where a client file calls a worker file and prints the response.

source panel When an example has more than one source file, the replay UI keeps each file in its own panel while preserving one ordered trace stream. The Variables panel follows the actual call into the worker file and the return back to the client.
boundary The client file owns the entry point and selected command. The worker file owns the response rule for that command.

Project Entry

selected
RequestClient.cs
Replay: real traced execution (multi-file project)
using System;

class Program
{
    static void Main()
    {
        string selected = "status";
        int requestId = 42;
        string label = selected;

        if (selected == "refresh")
        {
            label = "cache";
        }
        else if (selected == "archive")
        {
            label = "records";
        }

        string response = RequestWorker.Handle(selected);
        int ticket = requestId + selected.Length;

        Console.WriteLine("label=" + label);
        Console.WriteLine("ticket=" + ticket);
        Console.WriteLine(response);
    }
}
using System;

class Program
{
    static void Main()
    {
        string selected = "refresh";
        int requestId = 42;
        string label = selected;

        if (selected == "refresh")
        {
            label = "cache";
        }
        else if (selected == "archive")
        {
            label = "records";
        }

        string response = RequestWorker.Handle(selected);
        int ticket = requestId + selected.Length;

        Console.WriteLine("label=" + label);
        Console.WriteLine("ticket=" + ticket);
        Console.WriteLine(response);
    }
}
using System;

class Program
{
    static void Main()
    {
        string selected = "archive";
        int requestId = 42;
        string label = selected;

        if (selected == "refresh")
        {
            label = "cache";
        }
        else if (selected == "archive")
        {
            label = "records";
        }

        string response = RequestWorker.Handle(selected);
        int ticket = requestId + selected.Length;

        Console.WriteLine("label=" + label);
        Console.WriteLine("ticket=" + ticket);
        Console.WriteLine(response);
    }
}
  1. selected ← status, requestId ← 42, label ← status

    4{5    static void Main()6    {7        string selected→ status = "status"; //@selected="refresh", "archive"8        int requestId→ 42 = 42;9        string label→ status = selectedstatus;1011        if (selected == "refresh")12        {13            label = "cache";14        }15        else if (selected == "archive")16        {17            label = "records";18        }1920        string response = RequestWorker.Handle(selectedstatus);21        int ticket = requestId + selected.Length;
  2. access ← ok, response ← service ready

    3class Program4{5    static void Main()6    {7        string selected = "status"; //@selected="refresh", "archive"
    values this stepokaccessservice readyresponsestatuscommand
  3. response ← service ready

    20string response = RequestWorker.Handle(selected);21int ticket = requestId + selected.Length;2223Console.WriteLine("label=" + label);24Console.WriteLine("ticket=" + ticket);
    values this stepservice readyresponse
  4. Step 26

    25        Console.WriteLine(response);26    }27}
    values this stepokaccessservice readyresponse
  5. response ← ok:service ready, ticket ← 48

    20    string response→ ok:service ready = RequestWorker.Handle(selectedstatus);21    int ticket→ 48 = requestId42 + selected.Length6;2223    Console.WriteLine("label=" + labelstatus);24    Console.WriteLine("ticket=" + ticket48);25    Console.WriteLine(responseok:service ready);26}
    outputlabel=status
    ticket=48
    ok:service ready