Ignore if semaphore is used after task is cancelled

This commit is contained in:
Asriel Camora
2023-10-10 18:18:22 -07:00
parent f8f876d5f4
commit 9a924c8049
+15 -3
View File
@@ -137,7 +137,11 @@ public sealed class Solver : IDisposable
} }
finally finally
{ {
semaphore.Release(); try
{
semaphore.Release();
}
catch (ObjectDisposedException) { }
} }
var solution = solver.Solution(); var solution = solver.Solution();
var progressActions = activeStates[stateIdx].Actions.Concat(solution.Actions).Skip(definiteActionCount).ToList(); var progressActions = activeStates[stateIdx].Actions.Concat(solution.Actions).Skip(definiteActionCount).ToList();
@@ -255,7 +259,11 @@ public sealed class Solver : IDisposable
} }
finally finally
{ {
semaphore.Release(); try
{
semaphore.Release();
}
catch (ObjectDisposedException) { }
} }
var solution = solver.Solution(); var solution = solver.Solution();
OnWorkerProgress?.Invoke(solution, solver.MaxScore); OnWorkerProgress?.Invoke(solution, solver.MaxScore);
@@ -342,7 +350,11 @@ public sealed class Solver : IDisposable
} }
finally finally
{ {
semaphore.Release(); try
{
semaphore.Release();
}
catch (ObjectDisposedException) { }
} }
var solution = solver.Solution(); var solution = solver.Solution();
OnWorkerProgress?.Invoke(solution, solver.MaxScore); OnWorkerProgress?.Invoke(solution, solver.MaxScore);