From 1100562e29f6476448b656dbddd4cf22505523f6 Mon Sep 17 00:00:00 2001 From: Mitja Felicijan Date: Sun, 10 Mar 2024 14:59:14 +0100 Subject: Move back to JBMAFP --- .../2023-05-22-non-blocking-shell-exec-csharp.md | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 content/notes/2023-05-22-non-blocking-shell-exec-csharp.md (limited to 'content/notes/2023-05-22-non-blocking-shell-exec-csharp.md') diff --git a/content/notes/2023-05-22-non-blocking-shell-exec-csharp.md b/content/notes/2023-05-22-non-blocking-shell-exec-csharp.md new file mode 100644 index 0000000..afe7491 --- /dev/null +++ b/content/notes/2023-05-22-non-blocking-shell-exec-csharp.md @@ -0,0 +1,43 @@ +--- +title: Execute not blocking async shell command in C# +url: /non-blocking-shell-exec-csharp.html +date: 2023-05-22T12:00:00+02:00 +type: note +draft: false +--- + +Execute a shell command in async in C# while not blocking the UI thread. + +```c# +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()`. + +```c# +private async void button_Click(object sender, EventArgs e) +{ + await executeCopyCommand(); +} +``` + -- cgit v1.2.3