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
+12
View File
@@ -136,9 +136,13 @@ public sealed class Solver : IDisposable
solver.Search(Config.Iterations / Config.ForkCount, Token); solver.Search(Config.Iterations / Config.ForkCount, Token);
} }
finally finally
{
try
{ {
semaphore.Release(); 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();
OnWorkerProgress?.Invoke(solution with { Actions = progressActions }, solver.MaxScore); OnWorkerProgress?.Invoke(solution with { Actions = progressActions }, solver.MaxScore);
@@ -254,9 +258,13 @@ public sealed class Solver : IDisposable
solver.Search(Config.Iterations / Config.ForkCount, Token); solver.Search(Config.Iterations / Config.ForkCount, Token);
} }
finally finally
{
try
{ {
semaphore.Release(); semaphore.Release();
} }
catch (ObjectDisposedException) { }
}
var solution = solver.Solution(); var solution = solver.Solution();
OnWorkerProgress?.Invoke(solution, solver.MaxScore); OnWorkerProgress?.Invoke(solution, solver.MaxScore);
return (solver.MaxScore, solution); return (solver.MaxScore, solution);
@@ -341,9 +349,13 @@ public sealed class Solver : IDisposable
solver.Search(Config.Iterations / Config.ForkCount, Token); solver.Search(Config.Iterations / Config.ForkCount, Token);
} }
finally finally
{
try
{ {
semaphore.Release(); semaphore.Release();
} }
catch (ObjectDisposedException) { }
}
var solution = solver.Solution(); var solution = solver.Solution();
OnWorkerProgress?.Invoke(solution, solver.MaxScore); OnWorkerProgress?.Invoke(solution, solver.MaxScore);
return (solver.MaxScore, solution); return (solver.MaxScore, solution);