Ожидание завершения процесса С#?

В C# можно ожидать завершения процесса с помощью нескольких способов, включая использование методов класса Thread и класса Task.

1. Использование методов класса Thread:
В классе Thread есть метод Join, который позволяет ждать завершения процесса до того момента, как поток, вызывающий метод Join, будет успешно завершен или достигнет заданного времени ожидания. Например:

var thread = new Thread(SomeMethod);
thread.Start();

// Ждем завершения процесса
thread.Join();

// Код, выполняющийся после завершения процесса
Console.WriteLine("Процесс завершен");

2. Использование класса Task:
В C# 5.0 и более поздних версиях можно использовать класс Task и метод Task.Wait для ожидания завершения процесса. Task.Wait ожидает, пока задание (task) завершится, блокируя вызывающий поток до завершения задания. Например:

var task = Task.Run(SomeMethod);

// Ждем завершения процесса
task.Wait();

// Код, выполняющийся после завершения процесса
Console.WriteLine("Процесс завершен");

Обратите внимание, что использование метода Wait может привести к блокировке текущего потока, поэтому имейте в виду возможность использования асинхронных методов, чтобы не блокировать основной поток в приложении.

3. Использование async/await:
С помощью ключевых слов async и await можно ожидать завершения асинхронных операций в C#. Например, если ваш метод SomeMethod асинхронный, вы можете вызывать его с помощью await, и выполнение кода будет приостановлено, пока асинхронный метод не будет завершен. Например:

async Task DoWorkAsync()
{
    await SomeMethod();

    // Код, выполняющийся после завершения процесса
    Console.WriteLine("Процесс завершен");
}

// Вызываем метод DoWorkAsync
DoWorkAsync().Wait();

Это только несколько способов ожидания завершения процесса в C#. Исходный код и структура вашего приложения могут варьироваться, поэтому выберите для себя наиболее подходящий подход в зависимости от ваших требований.