Process.CloseMainWindow Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Bezár egy felhasználói felülettel rendelkező folyamatot úgy, hogy egy záró üzenetet küld a főablakba.
public:
bool CloseMainWindow();
public bool CloseMainWindow();
member this.CloseMainWindow : unit -> bool
Public Function CloseMainWindow () As Boolean
Válaszok
true ha a bezárási üzenet elküldése sikeresen megtörtént; false ha a társított folyamat nem rendelkezik főablakkal, vagy ha a főablak le van tiltva (például ha modális párbeszédpanel jelenik meg).
Kivételek
Példák
Az alábbi példa elindítja a Jegyzettömb egy példányát. Ezután lekéri a társított folyamat fizikai memóriahasználatát 2 másodperces időközönként, legfeljebb 10 másodpercig. A példa azt észleli, hogy a folyamat 10 másodperc előtt kilép-e. A példa akkor zárja be a folyamatot, ha 10 másodperc után is fut.
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);
}
}
}
}
open System.ComponentModel
open System.Diagnostics
open System.IO
open System.Threading
try
use myProcess = Process.Start "Notepad.exe"
// Display physical memory usage 5 times at intervals of 2 seconds.
let mutable i = 0
while i < 5 && not myProcess.HasExited do
// Discard cached information about the process.
myProcess.Refresh()
// Print working set to console.
printfn $"Physical Memory Usage: {myProcess.WorkingSet64}"
// Wait 2 seconds.
Thread.Sleep 2000
i <- i + 1
// Close process by sending a close message to its main window.
myProcess.CloseMainWindow() |> ignore
// Free resources associated with process.
myProcess.Close()
with
| :? Win32Exception
| :? FileNotFoundException as e ->
printfn "The following exception was raised: "
printfn $"{e.Message}"
Imports System.ComponentModel
Imports System.Diagnostics
Imports System.IO
Imports System.Threading
Namespace Process_Sample
Class MyProcessClass
Public Shared Sub Main()
Try
Using myProcess = Process.Start("Notepad.exe")
' Display physical memory usage 5 times at intervals of 2 seconds.
Dim i As Integer
For i = 0 To 4
If Not myProcess.HasExited Then
' 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
Exit For
End If
Next i
' Close process by sending a close message to its main window.
myProcess.CloseMainWindow()
' Free resources associated with process.
myProcess.Close()
End Using
Catch e As Exception When TypeOf e Is Win32Exception Or TypeOf e Is FileNotFoundException
Console.WriteLine("The following exception was raised: ")
Console.WriteLine(e.Message)
End Try
End Sub
End Class
End Namespace 'Process_Sample
Megjegyzések
Egy folyamat végrehajtásakor az üzenethurok várakozási állapotban van. Az üzenethurok minden alkalommal végrehajtja, amikor az operációs rendszer Windows üzenetet küld a folyamatnak. A hívás CloseMainWindow kérést küld a főablak bezárására, amely egy jól formázott alkalmazásban bezárja a gyermekablakokat, és visszavonja az alkalmazás összes futó üzenethurkját. A hívással CloseMainWindow történő kilépésre irányuló kérés nem kényszeríti az alkalmazást a kilépésre. Az alkalmazás kérheti a felhasználó ellenőrzését a kilépés előtt, vagy megtagadhatja a kilépést. Az alkalmazás kilépésre kényszerítéséhez használja a metódust Kill . A viselkedése megegyezik az alkalmazás főablakát a rendszermenüvel bezáró felhasználóéval CloseMainWindow . Ezért a főablak bezárásával a folyamatból való kilépésre irányuló kérés nem kényszeríti az alkalmazás azonnali kilépését.
A folyamat vagy a folyamat számára lefoglalt erőforrások által szerkesztett adatok elveszhetnek, ha meghívja Kill. Kill rendellenes folyamatvégződést okoz, és csak akkor szabad használni, ha szükséges. CloseMainWindow lehetővé teszi a folyamat rendezett leállítását, és bezárja az összes ablakot, így a felülettel rendelkező alkalmazások esetében előnyösebb. Ha CloseMainWindow nem sikerül, a folyamat leállításához használhatja Kill . Kill az egyetlen módja annak, hogy olyan folyamatokat állítsanak le, amelyek nem rendelkeznek grafikus felülettel.
Csak a helyi számítógépen futó folyamatok hívhatók meg KillCloseMainWindow . A távoli számítógépeken lévő folyamatok nem hagyhatók ki. Csak a távoli számítógépeken futó folyamatok adatait tekintheti meg.