How to Perform an Asynchronous Query by Using System.Management
Aby wykonać zapytanie asynchroniczne w przestrzeni nazw klienta Configuration Manager Windows Instrumentation (WMI), utwórz ManagementObjectSearcher
obiekt, który określa zapytanie WQL. Następnie utworzysz ManagementOperationObserver
program obsługi zdarzeń dla każdego wyniku zapytania, a także dla końca zapytania.
Zapytanie asynchroniczne jest uruchamiane, gdy metoda Get obiektu ManagementObjectSearcher
jest wywoływana z obiektem ManagementOperationObserver
.
Aby wykonać zapytanie asynchroniczne
Skonfiguruj połączenie z przestrzenią nazw usługi WMI klienta Configuration Manager. Aby uzyskać więcej informacji, zobacz How to Connect to the Configuration Manager Client WMI Namespace by Using System.Management (Jak nawiązać połączenie z przestrzenią nazw usługi WMI klienta Configuration Manager przy użyciu funkcji System.Management).
ManagementObjectSearcher
Utwórz obiekt.ManagementOperationObserver
Utwórz obiekt.ObjectReadyEventHandler
Dodaj metodę obiektuManagementOperationObserver
.CompletedEventHandler
Dodaj metodę do obiektuManagementOperationObserver
.Wywołaj metodę Get obiektu
ManagementObjectSearcher
i podajManagmentOperationObserver
obiekt jako parametr.Upewnij się, że aplikacja nadal działa podczas uruchamiania zapytania.
Przykład
Poniższy przykład kodu języka C# asynchronicznie wykonuje zapytania dotyczące składników zainstalowanych na kliencie.
Aby uzyskać informacje na temat wywoływania przykładowego kodu, zobacz How to Call a WMI Class Method by Using System.Management (Jak wywołać metodę klasy WMI przy użyciu pliku System.Management).
public void EnumerateInstancesAsync(ManagementScope scope)
{
try
{
// Instantiate an object searcher with the query.
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(scope, new
SelectQuery("CCM_InstalledComponent"));
// Create a results watcher object
// and handler for results and completion.
ManagementOperationObserver results = new
ManagementOperationObserver();
// Attach handler to events for results and completion.
results.ObjectReady += new
ObjectReadyEventHandler(this.NewObject);
results.Completed += new
CompletedEventHandler(this.Done);
Console.WriteLine("Installed Components");
Console.WriteLine("--------------------");
Console.WriteLine();
// Call the asynchronous overload of Get()
// to start the enumeration.
searcher.Get(results);
// Do something else while results
// arrive asynchronously.
while (!this.Completed)
{
System.Threading.Thread.Sleep(1000);
}
this.Reset();
}
catch (ManagementException e)
{
Console.WriteLine("Failed to run query: " + e.Message);
throw;
}
}
private bool isCompleted = false;
private void NewObject(object sender,
ObjectReadyEventArgs obj)
{
try
{
Console.WriteLine("Name: {0}, Version = {1}",
obj.NewObject["DisplayName"],
obj.NewObject["Version"]);
}
catch (ManagementException e)
{
Console.WriteLine("Error: " + e.Message);
}
}
private bool Completed
{
get
{
return isCompleted;
}
}
private void Reset()
{
isCompleted = false;
}
private void Done(object sender,
CompletedEventArgs obj)
{
isCompleted = true;
}
Ta przykładowa metoda ma następujące parametry:
Parametr | Wpisać | Opis |
---|---|---|
Scope |
ManagementScope |
Prawidłowa wartość ManagementScope . Ścieżka powinna mieć wartość root\ccm. |
Kompilowanie kodu
Obszary nazw
System.
System.Management.
Zestawu
System.Management.
Niezawodne programowanie
Wyjątek, który można zgłaszać, to System.Management.ManagementException.
Zobacz też
Informacje o programowaniu Configuration Manager WMI
How to Call a WMI Class Method by Using System.Management
How to Connect to the Configuration Manager Client WMI Namespace by Using System.Management (Jak nawiązać połączenie z przestrzenią nazw usługi WMI klienta Configuration Manager przy użyciu programu System.Management)
How to Perform a Synchronous Query by Using System.Management
Jak odczytać obiekt WMI przy użyciu programu System.Management
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla