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();
+}
+