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 de instrumental de Windows (WMI) de cliente de Configuration Manager, cree un ManagementObjectSearcher objeto que especifique una consulta WQL. A continuación, cree un ManagementOperationObserver controlador 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 ManagementObjectSearcher método Get del objeto con el ManagementOperationObserver objeto.
Para realizar una consulta asincrónica
Configura una conexión al espacio de nombres WMI de cliente de Configuration Manager. Para obtener más información, consulta Cómo conectarse al espacio de nombres WMI de cliente de Configuration Manager mediante System.Management.
Crear un
ManagementObjectSearcherobjeto.Crear un
ManagementOperationObserverobjeto.Agregue un
ObjectReadyEventHandlermétodo alManagementOperationObserverobjeto.Agregue un
CompletedEventHandlermétodo alManagementOperationObserver.Llame al
ManagementObjectSearcherobjeto Get y proporcione elManagmentOperationObserverobjeto como parámetro.Asegúrese de que la aplicación se sigue ejecutando mientras se ejecuta la consulta.
Ejemplo
El siguiente ejemplo de código de C# consulta de forma asincrónica los componentes que están 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 siguientes parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
Scope |
ManagementScope |
Un ManagementScopearchivo . 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 la programación WMI de Configuration Manager
Cómo llamar a un método de clase WMI mediante System.Management
Cómo conectarse al espacio de nombres WMI de cliente de Configuration Manager mediante System.Management
Cómo realizar una consulta sincrónica mediante System.Management
Cómo leer un objeto WMI mediante System.Management