System.Management Kullanarak Zaman Uyumsuz Sorgu Gerçekleştirme
Configuration Manager istemcisi Windows Araçları (WMI) ad alanında zaman uyumsuz sorgu gerçekleştirmek için WQL sorgusu belirten bir ManagementObjectSearcher
nesne oluşturun. Ardından her sorgu sonucu ve sorgunun sonu için bir olay işleyicisi belirten bir ManagementOperationObserver
oluşturursunuz.
Nesneyle get ManagementOperationObserver
yöntemi çağrıldığında ManagementObjectSearcher
zaman uyumsuz sorgu çalıştırılır.
Zaman uyumsuz sorgu gerçekleştirmek için
Configuration Manager istemcisi WMI ad alanına bir bağlantı ayarlayın. Daha fazla bilgi için bkz. System.Management Kullanarak Configuration Manager İstemcisi WMI Ad Alanına Bağlanma.
Bir
ManagementObjectSearcher
nesne oluşturun.Bir
ManagementOperationObserver
nesne oluşturun.nesnesine
ManagementOperationObserver
birObjectReadyEventHandler
yöntem ekleyin.öğesine
ManagementOperationObserver
birCompletedEventHandler
yöntem ekleyin.get yöntemini çağırın
ManagementObjectSearcher
ve nesnesini parametre olarak sağlayınManagmentOperationObserver
.Sorgu çalıştırılırken uygulamanızın hala çalıştığından emin olun.
Örnek
Aşağıdaki C# kod örneği, bir istemciye yüklenen bileşenler için zaman uyumsuz olarak sorgular.
Örnek kodu çağırma hakkında bilgi için bkz. How to Call a WMI Class Method by Using 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;
}
Bu örnek yöntem aşağıdaki parametrelere sahiptir:
Parametre | Tür | Açıklama |
---|---|---|
Scope |
ManagementScope |
Geçerli ManagementScope bir . Yol root\ccm olmalıdır. |
Kodu Derleme
Ad alanları
Sistem.
System.Management.
Derleme
System.Management.
Sağlam Programlama
Oluşturulabilecek özel durum System.Management.ManagementException'dır.
Ayrıca Bkz
WMI Programlama hakkında Configuration Manager
System.Management Kullanarak WMI Sınıf Yöntemini Çağırma
System.Management Kullanarak Configuration Manager İstemcisi WMI Ad Alanına Bağlanma
System.Management Kullanarak Zaman Uyumlu Sorgu Gerçekleştirme
System.Management Kullanarak WMI Nesnesi Okuma