From 14a7e601f10defb76dca752f8d02f3a6d5cf2782 Mon Sep 17 00:00:00 2001 From: safronov Date: Thu, 10 Feb 2022 01:08:20 +0300 Subject: [PATCH] Fix possible race condition --- YAFC/YAFC.csproj | 2 +- YAFCmodel/Model/ProjectPage.cs | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/YAFC/YAFC.csproj b/YAFC/YAFC.csproj index 3465c04f..d84d60a9 100644 --- a/YAFC/YAFC.csproj +++ b/YAFC/YAFC.csproj @@ -2,7 +2,7 @@ 8 - Exe + WinExe netcoreapp3.1 win-x64;linux-x64;osx-x64 x64 diff --git a/YAFCmodel/Model/ProjectPage.cs b/YAFCmodel/Model/ProjectPage.cs index 098bb7bf..c9037a20 100644 --- a/YAFCmodel/Model/ProjectPage.cs +++ b/YAFCmodel/Model/ProjectPage.cs @@ -83,31 +83,31 @@ protected internal override void ThisChanged(bool visualOnly) // Dont propagate page changes to project } - public Task ExternalSolve() - { - currentSolvingVersion = actualVersion; - return content.Solve(this); - } - - private async void RunSolveJob() + public async Task ExternalSolve() { + if (!IsSolutionStale()) + return modelError; currentSolvingVersion = actualVersion; try { var error = await content.Solve(this); await Ui.EnterMainThread(); - if (modelError != error) - modelError = error; - contentChanged?.Invoke(false); + return error; } finally { await Ui.EnterMainThread(); lastSolvedVersion = currentSolvingVersion; currentSolvingVersion = 0; - CheckSolve(); } } + + private async void RunSolveJob() + { + modelError = await ExternalSolve(); + contentChanged?.Invoke(false); + CheckSolve(); + } } public abstract class ProjectPageContents : ModelObject