Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Para executar uma consulta assíncrona em um namespace da Instrumentação do Windows (WMI) do cliente do Configuration Manager, crie um ManagementObjectSearcher objeto que especifique uma consulta WQL. Em seguida, crie um ManagementOperationObserver que especifique um manipulador de eventos para cada resultado de consulta e também para o final da consulta.
A consulta assíncrona é executada quando o ManagementObjectSearcher método Get do objeto é chamado com o ManagementOperationObserver objeto.
Para executar uma consulta assíncrona
Configure uma conexão com o namespace WMI do cliente do Configuration Manager. Para obter mais informações, consulte Como se conectar ao namespace WMI do cliente do Configuration Manager usando System.Management.
Criar um
ManagementObjectSearcherobjeto.Criar um
ManagementOperationObserverobjeto.Adicione um
ObjectReadyEventHandlermétodo aoManagementOperationObserverobjeto.Adicione um
CompletedEventHandlermétodo aoManagementOperationObserver.Chame o
ManagementObjectSearchermétodo Get do objeto e forneça oManagmentOperationObserverobjeto como um parâmetro.Verifique se o aplicativo ainda é executado enquanto a consulta é executada.
Exemplo
O exemplo de código C# a seguir consulta de forma assíncrona componentes instalados em um cliente.
Para obter informações sobre como chamar o código de exemplo, consulte Como chamar um método de classe WMI usando 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 exemplo tem os seguintes parâmetros:
| Parâmetro | Tipo | Descrição |
|---|---|---|
Scope |
ManagementScope |
Um domínio .ManagementScope O caminho deve ser root\ccm. |
Compilando o código
Namespaces
Sistema.
System.Management.
Assembly
System.Management.
Programação robusta
A exceção que pode ser gerada é System.Management.ManagementException.
Confira também
Sobre a programação WMI do Configuration Manager
Como chamar um método de classe WMI usando System.Management
Como se conectar ao namespace WMI do cliente do Configuration Manager usando System.Management
Como executar uma consulta síncrona usando System.Management
Como ler um objeto WMI usando System.Management