From 9b6898dfe111418b2c584d8e119abf751e04fbb3 Mon Sep 17 00:00:00 2001 From: Alexandre Mutel Date: Sun, 8 Dec 2024 16:40:08 +0100 Subject: [PATCH] Add async to filestream --- src/Ultra.Core/UltraProfilerEventPipe.cs | 28 ++++++++++-------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/src/Ultra.Core/UltraProfilerEventPipe.cs b/src/Ultra.Core/UltraProfilerEventPipe.cs index d603015..26009c5 100644 --- a/src/Ultra.Core/UltraProfilerEventPipe.cs +++ b/src/Ultra.Core/UltraProfilerEventPipe.cs @@ -144,12 +144,12 @@ private UltraSamplerProfilerState(UltraProfilerOptions options, DiagnosticsClien _token = token; _ultraDiagnosticsClient = ultraDiagnosticsClient; _ultraNetTraceFilePath = Path.Combine(Environment.CurrentDirectory, $"{baseName}_sampler_{pid}.nettrace"); - _ultraNetTraceFileStream = new FileStream(_ultraNetTraceFilePath, FileMode.Create, FileAccess.Write, FileShare.Read); + _ultraNetTraceFileStream = new FileStream(_ultraNetTraceFilePath, FileMode.Create, FileAccess.Write, FileShare.Read, 65536, FileOptions.Asynchronous); if (mainDiagnosticsClient != null) { _mainDiagnosticsClient = mainDiagnosticsClient; _mainNetTraceFilePath = Path.Combine(Environment.CurrentDirectory, $"{baseName}_main_{pid}.nettrace"); - _mainNetTraceFileStream = new FileStream(_mainNetTraceFilePath, FileMode.Create, FileAccess.Write, FileShare.Read); + _mainNetTraceFileStream = new FileStream(_mainNetTraceFilePath, FileMode.Create, FileAccess.Write, FileShare.Read, 65536, FileOptions.Asynchronous); } } @@ -191,18 +191,13 @@ public static async Task Connect(string baseName, int var diagnosticClientMain = new DiagnosticsClient(pid); var diagnosticClientUltra = await DiagnosticsClientConnector.FromDiagnosticPort(ultraDiagnosticPortSocket, token); - if (diagnosticClientUltra is null) - { - - } - var timeoutSource = new CancellationTokenSource(); var linkedCancellationTokenSource = CancellationTokenSource.CreateLinkedTokenSource(token, timeoutSource.Token); try { timeoutSource.CancelAfter(1000); - await diagnosticClientUltra.Instance.WaitForConnectionAsync(linkedCancellationTokenSource.Token).ConfigureAwait(false); + await diagnosticClientUltra!.Instance.WaitForConnectionAsync(linkedCancellationTokenSource.Token).ConfigureAwait(false); await diagnosticClientMain.WaitForConnectionAsync(linkedCancellationTokenSource.Token).ConfigureAwait(false); } catch (OperationCanceledException) when (timeoutSource.IsCancellationRequested) @@ -259,23 +254,24 @@ public async Task StartProfiling() public async Task Stop() { - if (_ultraSession is not null) + if (_ultraEventStreamCopyTask is not null) { - await _ultraSession.StopAsync(_token).ConfigureAwait(false); + await _ultraEventStreamCopyTask.ConfigureAwait(false); } - if (_mainSession is not null) + + if (_mainEventStreamCopyTask is not null) { - await _mainSession.StopAsync(_token).ConfigureAwait(false); + await _mainEventStreamCopyTask.ConfigureAwait(false); } - if (_ultraEventStreamCopyTask is not null) + if (_ultraSession is not null) { - await _ultraEventStreamCopyTask.ConfigureAwait(false); + await _ultraSession.StopAsync(_token).ConfigureAwait(false); } - if (_mainEventStreamCopyTask is not null) + if (_mainSession is not null) { - await _mainEventStreamCopyTask.ConfigureAwait(false); + await _mainSession.StopAsync(_token).ConfigureAwait(false); } }