Skip to content

Instantly share code, notes, and snippets.

@jessicamilene
Last active November 19, 2025 04:57
Show Gist options
  • Select an option

  • Save jessicamilene/4e444f91d4f1dce21f9685d0f90d6c4f to your computer and use it in GitHub Desktop.

Select an option

Save jessicamilene/4e444f91d4f1dce21f9685d0f90d6c4f to your computer and use it in GitHub Desktop.
[C#] Parallel asynchronous execution example

Parallel asynchronous execution - C# Example

Synchronous

Below we have a synchronous example when each worker counts to 10.

private static List<string> workers = new List<string>(){"A","B","C"};

static void Main(string[] args)
{
  CallWorkers();
  Console.ReadKey();
}

private static void CallWorkers()
{
  foreach (string workerName in workers)
  {
    Work(workerName);
  }
}

private static void Work(string workerName)
{
  for (int i = 0; i < 10; i++)
  {
    Console.WriteLine("WORKER " + workerName+ " - " + (i + 1));
  }
}

Output

WORKER A - 1
WORKER A - 2
WORKER A - 3
WORKER A - 4
WORKER A - 5
WORKER A - 6
WORKER A - 7
WORKER A - 8
WORKER A - 9
WORKER A - 10
WORKER B - 1
WORKER B - 2
WORKER B - 3
WORKER B - 4
WORKER B - 5
WORKER B - 6
WORKER B - 7
WORKER B - 8
WORKER B - 9
WORKER B - 10
WORKER C - 1
WORKER C - 2
WORKER C - 3
WORKER C - 4
WORKER C - 5
WORKER C - 6
WORKER C - 7
WORKER C - 8
WORKER C - 9
WORKER C - 10

The execution of the workers is sequential by the order of call.

Parallel Asynchronous

private static List<string> workers = new List<string>(){"A","B","C"};

static void Main(string[] args)
{
  CallWorkersParallelAsync();
  Console.ReadKey();
}

private static async Task CallWorkersParallelAsync()
{
  List<Task> tasks = new List<Task>();

  foreach (string workerName in workers)
  {
    tasks.Add(Task.Run(() => Work(workerName)));
  }
  await Task.WhenAll(tasks);
}

private static void Work(string workerName)
{
  for (int i = 0; i < 10; i++)
  {
    Console.WriteLine("WORKER " + workerName+ " - " + (i + 1));
  }
}

Output

WORKER A - 1
WORKER A - 2
WORKER A - 3
WORKER A - 4
WORKER A - 5
WORKER A - 6
WORKER A - 7
WORKER A - 8
WORKER A - 9
WORKER A - 10
WORKER B - 1
WORKER B - 2
WORKER B - 3
WORKER B - 4
WORKER B - 5
WORKER C - 1
WORKER C - 2
WORKER C - 3
WORKER C - 4
WORKER C - 5
WORKER C - 6
WORKER C - 7
WORKER C - 8
WORKER C - 9
WORKER C - 10
WORKER B - 6
WORKER B - 7
WORKER B - 8
WORKER B - 9
WORKER B - 10

The execution of the workers is parallel, they are running at the same time. At each run the output can be diffrent.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment