Process.CloseMainWindow Metoda

Definicja

Zamyka proces, który ma interfejs użytkownika, wysyłając bliski komunikat do głównego okna.

C#
public bool CloseMainWindow ();

Zwraca

true jeśli komunikat zamknięcia został pomyślnie wysłany; false jeśli skojarzony proces nie ma głównego okna lub jeśli okno główne jest wyłączone (na przykład jeśli jest wyświetlane modalne okno dialogowe).

Wyjątki

Proces został już zakończony.

-lub-

Żaden proces nie jest skojarzony z tym Process obiektem.

Przykłady

Poniższy przykład uruchamia wystąpienie Notatnika. Następnie pobiera użycie pamięci fizycznej skojarzonego procesu w 2 sekundach przez maksymalnie 10 sekund. W przykładzie wykryto, czy proces kończy się przed upływem 10 sekund. Przykład zamyka proces, jeśli nadal działa po 10 sekundach.

C#
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Threading;

namespace ProcessSample
{
    class MyProcessClass
    {
        public static void Main()
        {
            try
            {
                using (Process myProcess = Process.Start("Notepad.exe"))
                {
                    // Display physical memory usage 5 times at intervals of 2 seconds.
                    for (int i = 0; i < 5; i++)
                    {
                        if (!myProcess.HasExited)
                        {
                            // Discard cached information about the process.
                            myProcess.Refresh();
                            // Print working set to console.
                            Console.WriteLine($"Physical Memory Usage: {myProcess.WorkingSet}");
                            // Wait 2 seconds.
                            Thread.Sleep(2000);
                        }
                        else
                        {
                            break;
                        }
                    }

                    // Close process by sending a close message to its main window.
                    myProcess.CloseMainWindow();
                    // Free resources associated with process.
                    myProcess.Close();
                }
            }
            catch (Exception e) when (e is Win32Exception || e is FileNotFoundException)
            {
                Console.WriteLine("The following exception was raised: ");
                Console.WriteLine(e.Message);
            }
        }
    }
}

Uwagi

Gdy proces jest wykonywany, pętla komunikatów jest w stanie oczekiwania. Pętla komunikatów jest wykonywana za każdym razem, gdy komunikat systemu Windows jest wysyłany do procesu przez system operacyjny. Wywołanie CloseMainWindow wysyła żądanie zamknięcia okna głównego, które w dobrze sformułowanej aplikacji zamyka okna podrzędne i odwołuje wszystkie uruchomione pętle komunikatów dla aplikacji. Żądanie zakończenia procesu przez wywołanie CloseMainWindow metody nie wymusza zamknięcia aplikacji. Aplikacja może poprosić o weryfikację użytkownika przed zamknięciem lub odmówić jej zamknięcia. Aby wymusić zamknięcie aplikacji, użyj Kill metody . Zachowanie jest identyczne z zachowaniem CloseMainWindow użytkownika zamykającego główne okno aplikacji przy użyciu menu systemowego. W związku z tym żądanie zakończenia procesu przez zamknięcie okna głównego nie wymusza natychmiastowego zamknięcia aplikacji.

Dane edytowane przez proces lub zasoby przydzielone do tego procesu mogą zostać utracone, jeśli wywołasz metodę Kill. Kill powoduje nieprawidłowe zakończenie procesu i należy go używać tylko wtedy, gdy jest to konieczne. CloseMainWindow umożliwia uporządkowane zakończenie procesu i zamyka wszystkie okna, dlatego zaleca się, aby aplikacje z interfejsem. Jeśli CloseMainWindow proces zakończy się niepowodzeniem, możesz użyć Kill polecenia , aby zakończyć proces. Kill jest jedynym sposobem na zakończenie procesów, które nie mają interfejsów graficznych.

Można wywoływać Kill metody i CloseMainWindow tylko dla procesów uruchomionych na komputerze lokalnym. Nie można spowodować zakończenia procesów na komputerach zdalnych. Można wyświetlać tylko informacje dotyczące procesów uruchomionych na komputerach zdalnych.

Dotyczy

Produkt Wersje
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1