From 9a924c8049611baea229e2dc66c50e08b1bbcdf1 Mon Sep 17 00:00:00 2001 From: Asriel Camora Date: Tue, 10 Oct 2023 18:18:22 -0700 Subject: [PATCH] Ignore if semaphore is used after task is cancelled --- Solver/Solver.cs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/Solver/Solver.cs b/Solver/Solver.cs index e07b5f0..3dd5e26 100644 --- a/Solver/Solver.cs +++ b/Solver/Solver.cs @@ -137,7 +137,11 @@ public sealed class Solver : IDisposable } finally { - semaphore.Release(); + try + { + semaphore.Release(); + } + catch (ObjectDisposedException) { } } var solution = solver.Solution(); var progressActions = activeStates[stateIdx].Actions.Concat(solution.Actions).Skip(definiteActionCount).ToList(); @@ -255,7 +259,11 @@ public sealed class Solver : IDisposable } finally { - semaphore.Release(); + try + { + semaphore.Release(); + } + catch (ObjectDisposedException) { } } var solution = solver.Solution(); OnWorkerProgress?.Invoke(solution, solver.MaxScore); @@ -342,7 +350,11 @@ public sealed class Solver : IDisposable } finally { - semaphore.Release(); + try + { + semaphore.Release(); + } + catch (ObjectDisposedException) { } } var solution = solver.Solution(); OnWorkerProgress?.Invoke(solution, solver.MaxScore);