Process.Kill Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Принудительно завершает базовый процесс.
Перегрузки
Kill() |
Немедленно останавливает связанный процесс. |
Kill(Boolean) |
Немедленно останавливает связанный процесс и, при необходимости, его дочерние процессы. |
Комментарии
Метод Kill
принудительно завершает процесс, в то время как CloseMainWindow запрашивает только завершение.
При выполнении процесса с графическим интерфейсом цикл сообщений находится в состоянии ожидания.
Цикл сообщений выполняется каждый раз, когда операционная система отправляет в процесс сообщение Windows.
Вызов CloseMainWindow отправляет запрос на закрытие окна main, который в правильно сформированном приложении закрывает дочерние окна и отменяет все выполняемые циклы сообщений для приложения.
Запрос на выход из процесса путем вызова CloseMainWindow не приводит к принудительному завершению работы приложения.
Приложение может запросить проверку пользователя перед выходом или отказаться от выхода.
Чтобы принудительно завершить работу приложения, используйте Kill
метод .
Поведение пользователя идентично поведению CloseMainWindow пользователя, закрывающего окно main приложения с помощью системного меню. Таким образом, запрос на завершение процесса путем закрытия окна main не приводит к немедленному завершению работы приложения.
Примечание
Метод Kill выполняется асинхронно.
После вызова Kill
метода вызовите WaitForExit метод , чтобы дождаться завершения процесса, или проверка HasExited свойство , чтобы определить, завершился ли процесс.
Примечание
Метод WaitForExit и HasExited свойство не отражают состояние процессов-потомков.
Если Kill(entireProcessTree: true)
используется , и HasExited указывает, WaitForExit что выход завершился после завершения заданного процесса, даже если все потомки еще не вышли из него.
Данные, измененные процессом, или ресурсы, выделенные для процесса, могут быть потеряны при вызове Kill
.
Kill
вызывает аномальное завершение процесса и должно использоваться только при необходимости.
CloseMainWindow обеспечивает упорядоченное завершение процесса и закрытие всех окон, поэтому это предпочтительнее для приложений с интерфейсом.
В случае CloseMainWindow сбоя можно использовать для Kill
завершения процесса.
Kill
— единственный способ завершить процессы, у которых нет графических интерфейсов.
Можно вызывать Kill
и CloseMainWindow только для процессов, запущенных на локальном компьютере.
Невозможно привести к завершению процессов на удаленных компьютерах. Вы можете просматривать сведения только о процессах, выполняющихся на удаленных компьютерах.
Kill()
- Исходный код:
- Process.Unix.cs
- Исходный код:
- Process.Unix.cs
- Исходный код:
- Process.Unix.cs
Немедленно останавливает связанный процесс.
public:
void Kill();
public void Kill ();
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
public void Kill ();
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
[System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")]
public void Kill ();
member this.Kill : unit -> unit
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
member this.Kill : unit -> unit
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
[<System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")>]
member this.Kill : unit -> unit
Public Sub Kill ()
- Атрибуты
Исключения
Связанный процесс не может быть завершен.
Вы пытаетесь вызвать метод Kill() для процесса, выполняющегося на удаленном компьютере. Этот метод доступен только для процессов, запущенных на локальном компьютере.
С этим объектом Process не связаны никакие процессы.
См. также раздел
Применяется к
Kill(Boolean)
- Исходный код:
- Process.NonUap.cs
- Исходный код:
- Process.NonUap.cs
- Исходный код:
- Process.NonUap.cs
Немедленно останавливает связанный процесс и, при необходимости, его дочерние процессы.
public:
void Kill(bool entireProcessTree);
public void Kill (bool entireProcessTree);
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
public void Kill (bool entireProcessTree);
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
[System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")]
public void Kill (bool entireProcessTree);
member this.Kill : bool -> unit
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
member this.Kill : bool -> unit
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
[<System.Runtime.Versioning.SupportedOSPlatform("maccatalyst")>]
member this.Kill : bool -> unit
Public Sub Kill (entireProcessTree As Boolean)
Параметры
- entireProcessTree
- Boolean
true
для уничтожения связанного процесса и его потомков; false
для уничтожения только связанного процесса.
- Атрибуты
Исключения
Вы пытаетесь вызвать метод Kill() для процесса, выполняющегося на удаленном компьютере. Этот метод доступен только для процессов, запущенных на локальном компьютере.
платформа .NET Framework и .NET Core 3.0 и более ранних версий: процесс уже завершен.
-или-
С этим объектом Process не связаны никакие процессы.
-или-
Вызывающий процесс является членом дерева потомков связанного процесса.
Не все процессы в дереве потомков связанного процесса могут быть завершены.
Комментарии
Если entireProcessTree
для задано значение true
, процессы, в которых вызов не имеет разрешений на просмотр сведений, автоматически пропускаются процессом завершения потомков, так как процесс завершения не может определить, являются ли эти процессы потомками.