From 2417a6b7603524dc5cd30d29b153f91024b9443d Mon Sep 17 00:00:00 2001 From: Mitja Felicijan Date: Wed, 1 Nov 2023 22:54:27 +0100 Subject: Move to Jekyll --- .../2023-05-22-non-blocking-shell-exec-csharp.md | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 _posts/2023-05-22-non-blocking-shell-exec-csharp.md (limited to '_posts/2023-05-22-non-blocking-shell-exec-csharp.md') diff --git a/_posts/2023-05-22-non-blocking-shell-exec-csharp.md b/_posts/2023-05-22-non-blocking-shell-exec-csharp.md new file mode 100644 index 0000000..f8b9c53 --- /dev/null +++ b/_posts/2023-05-22-non-blocking-shell-exec-csharp.md @@ -0,0 +1,45 @@ +--- +title: Execute not blocking async shell command in C# +permalink: /non-blocking-shell-exec-csharp.html +date: 2023-05-22T12:00:00+02:00 +layout: post +type: note +draft: false +tags: [csharp] +--- + +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