gpt4 book ai didi

c# - 异步调用时如何让 ManagementObjectSearcher 返回 ManagementObjectCollection?

转载 作者:行者123 更新时间:2023-11-30 18:26:42 25 4
gpt4 key购买 nike

这是我的一些有效代码:

SelectQuery query = new SelectQuery("Win32_SystemDriver")
{
Condition = "Name = 'FTDIBUS'"
};
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection drivers = searcher.Get();

但我想异步调用它。我看到 searcher.Get() 有一个异步运行的重载,它通过传入一个 ManagementOperationObserver 实例来工作。

不过,我不知道如何真正让它返回相同的集合。这是我到目前为止所拥有的:

private bool _completed = false;

public void QueryDrivers()
{
SelectQuery query = new SelectQuery("Win32_SystemDriver")
{
Condition = "Name = 'FTDIBUS'"
};
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementOperationObserver results = new ManagementOperationObserver();
results.Completed += new CompletedEventHandler(QueryComplete);
searcher.Get(results);

while (!_completed)
{
Thread.Sleep(100);
}

// how do i access my ManagementObjectCollection here?
//ManagementObjectCollection drivers = ????
}

private void QueryComplete(object sender, CompletedEventArgs e)
{
_completed = true;
}

最佳答案

订阅 ObjectReady,您将在那里一一收到您所有的 ManagementObjects:

results.ObjectReady+= Obs_ObjectReady;

...

// this will get called as many times as you have objects in the expected collection
private void Obs_ObjectReady(object sender, ObjectReadyEventArgs e)
{
var obj = e.NewObject as ManagementObject;
}

关于c# - 异步调用时如何让 ManagementObjectSearcher 返回 ManagementObjectCollection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28157968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com