From 69bed481dbc4b8655214cb77f94eb782f4a9ac9f Mon Sep 17 00:00:00 2001 From: Mikhalkovich Stanislav Date: Fri, 30 Jan 2026 14:55:22 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20exe?= =?UTF-8?q?=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0=20=D0=BF=D0=BE=D1=81=D0=BB?= =?UTF-8?q?=D0=B5=20=D0=BE=D0=BA=D0=BE=D0=BD=D1=87=D0=B0=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D1=8B=20-?= =?UTF-8?q?=20=D0=BD=D0=B5=20=D0=B2=D1=81=D0=B5=D0=B3=D0=B4=D0=B0=20=D1=83?= =?UTF-8?q?=D0=B4=D0=B0=D0=BB=D1=8F=D0=BB=D0=BE=D1=81=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Workbench/RunnerManagerHandlers.cs | 48 ++++++++++++++----- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/VisualPascalABCNET/Workbench/RunnerManagerHandlers.cs b/VisualPascalABCNET/Workbench/RunnerManagerHandlers.cs index 72b160c38..51a2f3336 100644 --- a/VisualPascalABCNET/Workbench/RunnerManagerHandlers.cs +++ b/VisualPascalABCNET/Workbench/RunnerManagerHandlers.cs @@ -156,19 +156,45 @@ namespace VisualPascalABC void WaitCallback_DeleteEXEAndPDB(object state) { - //int i = 0; string fileName = (string)state; - //while (i < 20) // 20 раз пытаться удалять! Это сильно! - //{ - try + + if (Workbench.UserOptions.DeleteEXEAfterExecute) { - if (Workbench.UserOptions.DeleteEXEAfterExecute && File.Exists(fileName)) - File.Delete(fileName); - } - catch - { - WorkbenchServiceFactory.OperationsService.AddTextToCompilerMessagesSync("Не удалось удалить EXE-файл"); - } + bool deleted = false; + for (int i = 0; i < 20; i++) + { + try + { + // Пытаемся удалить файл - не проверяем, есть ли он + File.Delete(fileName); + deleted = true; + break; // Файл удален - выходим из цикла + } + catch (FileNotFoundException) + { + // Файла уже нет - считаем успехом + deleted = true; + break; + } + catch (DirectoryNotFoundException) + { + // Директории нет - файла тоже нет + deleted = true; + break; + } + catch (Exception) + { + // Файл занят - ждем 10 мс и пробуем снова + System.Threading.Thread.Sleep(10); + } + } + if (!deleted) + { + WorkbenchServiceFactory.OperationsService.AddTextToCompilerMessagesSync( + "Не удалось удалить EXE-файл\n"); + } + } + try { if (Workbench.UserOptions.DeletePDBAfterExecute)