Execute not blocking async shell command in C#

note, May 22, 2023 on Mitja Felicijan's blog

Execute a shell command in async in C# while not blocking the UI thread.

private async Task executeCopyCommand()
-{
-  await Task.Run(() =>
-  {
-    var processStartInfo = new ProcessStartInfo("cmd", "/c dir")
-    {
-      RedirectStandardOutput = true,
-      UseShellExecute = false,
-      CreateNoWindow = true
-    };
-
-    var process = new Process
-    {
-      StartInfo = processStartInfo
-    };
-
-    process.Start();
-    process.WaitForExit();
-  });
-}
-

Make sure that async is present in the function definition and await is used -in the method that calls executeCopyCommand().

private async void button_Click(object sender, EventArgs e)
-{
-  await executeCopyCommand();
-}
-