В 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#. Исходный код и структура вашего приложения могут варьироваться, поэтому выберите для себя наиболее подходящий подход в зависимости от ваших требований.