Когда мой первый сервис остановился и удалил второй сервис, я не могу удалить файлы - PullRequest
0 голосов
/ 15 апреля 2020

Мой первый сервис - это обновитель второго сервиса. Во время работы мой первый сервис отключает и удаляет второй сервис, удаляет файлы второго сервиса, вставляет новые файлы на их место и переустанавливает сервис. Когда я пытаюсь удалить файлы, я получаю исключение, что мой второй сервис все еще используется в первом сервисе. Что вы думаете об этой ошибке? Здесь код для отключения сервиса и обновления файлов.

Добавлю, что служба удаляется успешно, я не вижу ее в диспетчере задач

// Zatrzymywanie i usuwanie usługi
                ServiceController RunService = ServiceController.GetServices().FirstOrDefault(x => x.ServiceName == AppIdentification.RunServiceName);
                if(RunService != null)
                { 
                    try
                    {
                        if(RunService.Status != ServiceControllerStatus.Stopped)
                        {
                            RunService.Stop();
                            RunService.WaitForStatus(ServiceControllerStatus.Stopped, new TimeSpan(0, 0, 30));
                        }

                        ManagedInstallerClass.InstallHelper(new string[] { "/u", System.AppDomain.CurrentDomain.BaseDirectory + AppIdentification.RunServiceFolder + AppIdentification.RunServiceName + ".exe" });
                    }
                    catch(Exception e)
                    {
                        Help.AddLog(">>> UpdateProcedure nie udało się zatrzymać usługi " + AppIdentification.RunServiceName, e.Message);
                        return false;
                    }
                }


// Usuwanie plików z folderu RunService
                bool DeleteRunServiceFileSuccess = false;
                try
                {
                    if (Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + AppIdentification.RunServiceFolder))
                        Directory.Delete(AppDomain.CurrentDomain.BaseDirectory + AppIdentification.RunServiceFolder, true);
                    Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + AppIdentification.RunServiceFolder);
                    DeleteRunServiceFileSuccess = true;
                }
                catch (Exception e)
                {
                    Help.AddLog("UpdateProcedure nie udało się usunąć starych plików", e.Message);
                }
                if (!DeleteRunServiceFileSuccess)
                {
                    GSDb.DbOperation.Export(DbConfig, "UPDATE `AppIdentification` SET `IsUpdatingNow`=0 WHERE `ID`=" + flags.AppData.AppIdentificationID);
                    return false;
                }
...