diff --git a/src/common/LibplanetConsole.Common/Threading/TaskUtility.cs b/src/common/LibplanetConsole.Common/Threading/TaskUtility.cs index 289dfe9a..80a087de 100644 --- a/src/common/LibplanetConsole.Common/Threading/TaskUtility.cs +++ b/src/common/LibplanetConsole.Common/Threading/TaskUtility.cs @@ -29,4 +29,17 @@ public static async Task TryDelay( return false; } } + + public static async Task TryWait(Task task) + { + try + { + await task; + return true; + } + catch (Exception) + { + return false; + } + } } diff --git a/src/console/LibplanetConsole.Console/Client.cs b/src/console/LibplanetConsole.Console/Client.cs index 45ccd699..4fe80a0d 100644 --- a/src/console/LibplanetConsole.Console/Client.cs +++ b/src/console/LibplanetConsole.Console/Client.cs @@ -6,6 +6,7 @@ using LibplanetConsole.Client.Grpc; using LibplanetConsole.Common; using LibplanetConsole.Common.Extensions; +using LibplanetConsole.Common.Threading; using LibplanetConsole.Console.Grpc; using Microsoft.Extensions.Logging; @@ -215,7 +216,7 @@ public async ValueTask DisposeAsync() { await _processCancellationTokenSource.CancelAsync(); _processCancellationTokenSource.Dispose(); - await _processTask; + await TaskUtility.TryWait(_processTask); _processTask = Task.CompletedTask; _process = null; diff --git a/src/console/LibplanetConsole.Console/Node.cs b/src/console/LibplanetConsole.Console/Node.cs index 9c6b5e4b..16eae484 100644 --- a/src/console/LibplanetConsole.Console/Node.cs +++ b/src/console/LibplanetConsole.Console/Node.cs @@ -4,6 +4,7 @@ using LibplanetConsole.Blockchain.Grpc; using LibplanetConsole.Common; using LibplanetConsole.Common.Extensions; +using LibplanetConsole.Common.Threading; using LibplanetConsole.Console.Grpc; using LibplanetConsole.Node; using LibplanetConsole.Node.Grpc; @@ -240,7 +241,7 @@ public async ValueTask DisposeAsync() { await _processCancellationTokenSource.CancelAsync(); _processCancellationTokenSource.Dispose(); - await _processTask; + await TaskUtility.TryWait(_processTask); _processTask = Task.CompletedTask; _process = null;