Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Para realizar una consulta asincrónica en un espacio de nombres Configuration Manager instrumental de Windows (WMI) cliente, cree un ManagementObjectSearcher objeto que especifique una consulta WQL. A continuación, cree un ManagementOperationObserver objeto que especifique un controlador de eventos para cada resultado de la consulta y también para el final de la consulta.
La consulta asincrónica se ejecuta cuando se llama al método Get del ManagementObjectSearcher objeto con el ManagementOperationObserver objeto .
Para realizar una consulta asincrónica
Configure una conexión al espacio de nombres WMI de cliente Configuration Manager. Para obtener más información, vea Cómo conectarse al espacio de nombres WMI de cliente Configuration Manager mediante System.Management.
Cree un
ManagementObjectSearcherobjeto .Cree un
ManagementOperationObserverobjeto .Agregue un
ObjectReadyEventHandlermétodo alManagementOperationObserverobjeto .Agregue un
CompletedEventHandlermétodo aManagementOperationObserver.Llame al método Get del
ManagementObjectSearcherobjeto y proporcione elManagmentOperationObserverobjeto como parámetro.Asegúrese de que la aplicación sigue ejecutándose mientras se ejecuta la consulta.
Ejemplo
En el siguiente ejemplo de código de C# se consultan de forma asincrónica los componentes instalados en un cliente.
Para obtener información sobre cómo llamar al código de ejemplo, vea Cómo llamar a un método de clase WMI mediante 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;
}
Este método de ejemplo tiene los parámetros siguientes:
| Parámetro | Tipo | Descripción |
|---|---|---|
Scope |
ManagementScope |
Un valor válido ManagementScope. La ruta de acceso debe ser root\ccm. |
Compilar el código
Espacios de nombres
Sistema.
System.Management.
Ensamblado
System.Management.
Programación sólida
La excepción que se puede generar es System.Management.ManagementException.
Consulta también
Acerca de Configuration Manager programación WMI
Cómo llamar a un método de clase WMI mediante System.Management
Conexión al espacio de nombres WMI de cliente Configuration Manager mediante System.Management
Cómo realizar una consulta sincrónica mediante System.Management
Cómo leer un objeto WMI mediante System.Management