From 65a7f084518a7b757dab40178e62ba5078b78bfc Mon Sep 17 00:00:00 2001 From: Bradley Grainger Date: Mon, 15 Mar 2021 11:43:33 -0700 Subject: [PATCH] Synchronize access to StringBuilders. Fixes #8 --- src/CloneLeeroy/Program.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/CloneLeeroy/Program.cs b/src/CloneLeeroy/Program.cs index 2842d00..91d8f60 100644 --- a/src/CloneLeeroy/Program.cs +++ b/src/CloneLeeroy/Program.cs @@ -215,10 +215,19 @@ private static string VerifySuccess((int ExitCode, string Stdout, string Stderr) foreach (var argument in arguments) process.StartInfo.ArgumentList.Add(argument); + var lck = new object(); var output = new StringBuilder(); var error = new StringBuilder(); - process.OutputDataReceived += (sender, args) => output.Append(args.Data + Environment.NewLine); - process.ErrorDataReceived += (sender, args) => error.Append(args.Data + Environment.NewLine); + process.OutputDataReceived += (sender, args) => + { + lock (lck) + output.Append(args.Data + Environment.NewLine); + }; + process.ErrorDataReceived += (sender, args) => + { + lock (lck) + error.Append(args.Data + Environment.NewLine); + }; if (!process.Start()) throw new InvalidOperationException("Couldn't start git"); @@ -227,7 +236,8 @@ private static string VerifySuccess((int ExitCode, string Stdout, string Stderr) await process.WaitForExitAsync(); - return (process.ExitCode, output.ToString(), error.ToString()); + lock (lck) + return (process.ExitCode, output.ToString(), error.ToString()); } private static ScopedConsoleColor SetColor(ConsoleColor color)