Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aby wykonać zapytanie asynchroniczne w przestrzeni nazw usługi Instrumentacja Windows (WMI) klienta programu Configuration Manager, utwórz ManagementObjectSearcher obiekt określający zapytanie WQL. Następnie należy utworzyć program określający procedurę ManagementOperationObserver obsługi zdarzeń dla każdego wyniku zapytania, a także dla końca zapytania.
Zapytanie asynchroniczne jest uruchamiane, gdy ManagementObjectSearcher metoda Get obiektu jest wywoływana z obiektem ManagementOperationObserver .
Aby wykonać zapytanie asynchroniczne
Skonfiguruj połączenie z przestrzenią nazw usługi WMI klienta programu Configuration Manager. Aby uzyskać więcej informacji, zobacz Jak nawiązać połączenie z przestrzenią nazw WMI klienta Configuration Manager przy użyciu System.Management.
ManagementObjectSearcherTworzenie obiektu.ManagementOperationObserverTworzenie obiektu.ObjectReadyEventHandlerDodaj metodę obiektuManagementOperationObserver.CompletedEventHandlerDodaj metodę do polaManagementOperationObserver.Wywołaj
ManagementObjectSearcherobiekt Get i podajManagmentOperationObserverobiekt jako parametr.Upewnij się, że aplikacja nadal działa, gdy zapytanie jest uruchomione.
Przykład
Poniższy przykład kodu w języku C# asynchronicznie wysyła 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 usługi WMI przy użyciu 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łowy ManagementScopeplik . Ścieżka powinna mieć postać root\ccm. |
Kompilowanie kodu
Przestrzenie nazw
systemu.
System.Management.
Montaż
System.Management.
Wydajne programowanie
Wyjątek, który może zostać zgłoszony, to System.Management.ManagementException.
Zobacz też
Informacje o programowaniu usługi WMI programu Configuration Manager
Jak wywołać metodę klasy WMI przy użyciu System.Management
Jak nawiązać połączenie z przestrzenią nazw WMI klienta programu Configuration Manager przy użyciu polecenia System.Management
Jak wykonać zapytanie synchroniczne za pomocą System.Management
Jak odczytać obiekt WMI przy użyciu funkcji System.Management