gpt4 book ai didi

multithreading - 多线程WMI调用-如何最好地处理此问题?

转载 作者:行者123 更新时间:2023-12-03 13:21:51 25 4
gpt4 key购买 nike

嗨,我需要向域中的每个系统发送WMI查询(可能是数千个),并且WMI查询似乎需要很长时间才能返回。因此,我正在审查使用多个线程发送多个请求的最佳方法,以便该过程可以在后台运行,并且调用可以重叠。

我喜欢BackgroundWorker提供的功能,并且阅读了HERE,它使用了后台的ThreadPool。我真的不明白,但是我将如何利用它来实现自己的目的。看来,如果必须发送1000个查询,则可以执行一个循环,在该循环中我为每个查询调用一个新的BG工作程序,并且该线程池一次最多使用25(?)个线程,其余975个请求为排队。那会发生什么吗?

如果这是正确的,我想排队1000个请求的过程本身将冻结UI,那么排队循环本身是否应该在另一个BG工作程序中运行?

从工作线程调用其他工作线程是否有问题?

我是否应该只创建说20个BG worker 线程,并在一个线程完成时手动启动另一个线程?

我了解这个权利吗?任何建议将不胜感激!

最佳答案

我使用System.Threading.Tasks命名空间中的Parallel.ForEach方法。

创建一个List ,其中包含要查询的所有主机名。然后,创建一个将字符串作为输入的方法,并对其进行查询,并对该数据进行任何您想做的事情。

将它们放在这样的ForEach方法中

Parallel.ForEach(ComputerList, QueryAComputer);

让它撕裂。请确保在不需要时立即在ManagementObjects上调用Dispose()方法。我认为有些问题会导致一次执行太多查询时WMI中断。 Dispose()应该有助于释放这些资源并防止死锁。

关于multithreading - 多线程WMI调用-如何最好地处理此问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6923374/

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