Skip to content

Commit 7199b94

Browse files
committed
Switching from async tasks to sync threads.
1 parent 54a1a19 commit 7199b94

File tree

2 files changed

+64
-20
lines changed

2 files changed

+64
-20
lines changed

dotnet/src/webdriver/DriverService.cs

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
using System.IO;
2626
using System.Net;
2727
using System.Net.Http;
28+
using System.Threading;
2829
using System.Threading.Tasks;
2930
using OpenQA.Selenium.Internal.Logging;
3031

@@ -319,12 +320,22 @@ protected virtual void OnDriverProcessStarted(DriverProcessStartedEventArgs even
319320

320321
if (this.WriteDriverLogToConsole && eventArgs.StandardOutputStreamReader != null)
321322
{
322-
_ = Task.Run(() => ReadStreamAsync(eventArgs.StandardOutputStreamReader, "stdout"));
323+
var stdoutThread = new Thread(() => ReadStreamSync(eventArgs.StandardOutputStreamReader, "stdout"))
324+
{
325+
IsBackground = true,
326+
Name = "DriverService-stdout"
327+
};
328+
stdoutThread.Start();
323329
}
324330

325331
if (this.WriteDriverLogToConsole && eventArgs.StandardErrorStreamReader != null)
326332
{
327-
_ = Task.Run(() => ReadStreamAsync(eventArgs.StandardErrorStreamReader, "stderr"));
333+
var stderrThread = new Thread(() => ReadStreamSync(eventArgs.StandardErrorStreamReader, "stderr"))
334+
{
335+
IsBackground = true,
336+
Name = "DriverService-stderr"
337+
};
338+
stderrThread.Start();
328339
}
329340

330341
this.DriverProcessStarted?.Invoke(this, eventArgs);
@@ -409,6 +420,38 @@ private bool WaitForServiceInitialization()
409420
return isInitialized;
410421
}
411422

423+
private void ReadStreamSync(StreamReader reader, string streamType)
424+
{
425+
try
426+
{
427+
string? line;
428+
while ((line = reader.ReadLine()) != null)
429+
{
430+
if (streamType.Equals("stdout", StringComparison.OrdinalIgnoreCase))
431+
{
432+
if (_logger.IsEnabled(LogEventLevel.Info))
433+
{
434+
_logger.Info(line);
435+
}
436+
}
437+
else
438+
{
439+
if (_logger.IsEnabled(LogEventLevel.Error))
440+
{
441+
_logger.Error(line);
442+
}
443+
}
444+
}
445+
}
446+
catch (Exception ex)
447+
{
448+
if (_logger.IsEnabled(LogEventLevel.Error))
449+
{
450+
_logger.Error($"Error reading stream: {ex}");
451+
}
452+
}
453+
}
454+
412455
private async Task ReadStreamAsync(StreamReader reader, string streamType)
413456
{
414457
try

dotnet/src/webdriver/Firefox/FirefoxDriverService.cs

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
using System.Globalization;
2323
using System.IO;
2424
using System.Text;
25-
using System.Threading.Tasks;
25+
using System.Threading;
2626
using OpenQA.Selenium.Internal.Logging;
2727

2828
namespace OpenQA.Selenium.Firefox;
@@ -233,12 +233,22 @@ protected override void OnDriverProcessStarted(DriverProcessStartedEventArgs eve
233233
{
234234
if (!string.IsNullOrEmpty(this.LogPath) && eventArgs.StandardOutputStreamReader != null)
235235
{
236-
_ = Task.Run(() => ReadStreamAsync(eventArgs.StandardOutputStreamReader));
236+
var stdoutThread = new Thread(() => ReadStream(eventArgs.StandardOutputStreamReader))
237+
{
238+
IsBackground = true,
239+
Name = "FirefoxDriverService-stdout"
240+
};
241+
stdoutThread.Start();
237242
}
238243

239244
if (!string.IsNullOrEmpty(this.LogPath) && eventArgs.StandardErrorStreamReader != null)
240245
{
241-
_ = Task.Run(() => ReadStreamAsync(eventArgs.StandardErrorStreamReader));
246+
var stderrThread = new Thread(() => ReadStream(eventArgs.StandardErrorStreamReader))
247+
{
248+
IsBackground = true,
249+
Name = "FirefoxDriverService-stderr"
250+
};
251+
stderrThread.Start();
242252
}
243253

244254
base.OnDriverProcessStarted(eventArgs);
@@ -344,24 +354,15 @@ private static string FirefoxDriverServiceFileName()
344354
return fileName;
345355
}
346356

347-
private async Task ReadStreamAsync(StreamReader reader)
357+
private void ReadStream(StreamReader reader)
348358
{
349-
try
350-
{
351-
string? line;
352-
while ((line = await reader.ReadLineAsync()) != null)
353-
{
354-
if (logWriter != null)
355-
{
356-
logWriter.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} {line}");
357-
}
358-
}
359-
}
360-
catch (Exception ex)
359+
string line;
360+
while ((line = reader.ReadLine()) != null)
361361
{
362-
if (_logger.IsEnabled(LogEventLevel.Error))
362+
if (logWriter != null)
363363
{
364-
_logger.Error($"Error reading stream: {ex.Message}");
364+
logWriter.WriteLine(line);
365+
logWriter.Flush();
365366
}
366367
}
367368
}

0 commit comments

Comments
 (0)