Технически вы можете просто позвонить Process.Kill()
, чтобы немедленно завершить процесс.Тем не менее, большую часть времени это не тот путь, потому что WebAPI может быть в середине важных операций, и вы не можете точно сказать, когда эти действия могут происходить, а Process.Kill()
на самом деле не считается «изящным».
Что было бы наиболее разумно сделать, это сказать процессу, что вы хотели бы , чтобы он завершился при первой же возможности, а затем разрешить WebAPI убирать вещи до его выхода.сам.Если вы разрабатываете WebAPI, это даже лучше, потому что таким образом вы можете решить, как это сделать.Звонить Kill()
только тогда, когда это абсолютно необходимо.
Конечно, вы можете сделать это несколькими способами.Некоторые из них приходят на ум - это сокеты, которые периодически проверяются и отправляют ввод CTRL + C в WebAPI.
public Task StopAsync(CancellationToken cancellationToken)
{
// send request to shut down
// wait for process to exit and free its resources
process.WaitForExit();
process.Close();
process.Dispose();
_timer?.Change(Timeout.Infinite, 0);
return Task.CompletedTask;
}
Конечно, если это Async, то не имеет смысла ждать его выходавнутри метода, чтобы вы просто подождали или проверили, вышел ли он за пределы этого метода.