не закрывает процесс

175
26 ноября 2021, 10:20

Есть основная программа, которая при определенном условии запускает второй exe'шник, который должен в свою очередь закрыть основную программу, обновить ее и запустить заново.

Метод основной программы, запускающий второй exe'шник

private void GetProductVersion()
        {
            int currentVersion = Convert.ToInt32(Application.ProductVersion.Replace(".", ""));
            int versionRemote = 0;
            string queryProductVersion = String.Format("select \"file_ver\" from dbo.AutoUpdates where \"file_ver\" = '1.0.0.41'");
            var loadData = cs.LoadFile("DataConnection.xml");
            string connString = String.Format("Data Source={0};Initial Catalog={1};User Id={2};Password={3}", loadData.Host, loadData.Database, loadData.UserId, loadData.PWD);
            using (SqlConnection conn = new SqlConnection(connString))
            {
                conn.Open();
                using (SqlCommand cmd = new SqlCommand(queryProductVersion, conn))
                {
                    versionRemote = Convert.ToInt32(cmd.ExecuteScalar().ToString().Replace(".", ""));
                }
            }
            if (currentVersion < versionRemote)
            {
                Process.Start(@"D:\Projects\Doc\Update\bin\Debug\Update.exe");
            }
        }  

Второй exe'шник, в котором пытаюсь закрыть основную программу

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                foreach (Process proc in Process.GetProcessesByName("FirstApp.exe"))
                {
                    proc.Kill();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        } 

Полный путь также пробовал прописывать для GetProcessesByName, но программу не закрывает. Чисто для теста пробовал по нажатию кнопки запускать снова основную программу - запускает. На закрытие почему-то не работает. Где я ошибся?

Answer 1

Просто не используйте расширение исполняемого файла (.exe) при поиска процесса.

Process.GetProcessesByName("FirstApp")

docs.microsoft.com :

Имя процесса — это понятное имя процесса, например Outlook, которое не включает расширение EXE или путь.

READ ALSO
Serialized file size of 6.98 GB (7493681080 bytes) exceeds maximum. Подгрузка чанков в райнтайме по надобности

Serialized file size of 6.98 GB (7493681080 bytes) exceeds maximum. Подгрузка чанков в райнтайме по надобности

Возникает из-за размера террейна(он разбит на 100 частей)Во время сборки проекта:

283
Изменение статуса потока

Изменение статуса потока

Подскажите пожалуйстаСоздаю новый поток Thread и запускаю его, затем я проверяю его состояние IsActive, мне нужно когда оно будет равно false снова...

97
session not created: This version of ChromeDriver only supports Chrome version 74 error with ChromeDriver Chrome using Selenium

session not created: This version of ChromeDriver only supports Chrome version 74 error with ChromeDriver Chrome using Selenium

Запускается приложение, и спустя некоторое время, выдаётся ошибки что хром драйвер поддерживает только 74 версию, ну или любую другую, в зависимости...

200