当查询大量远程网络PC时,如何在foreach循环中超时?

发布于 2024-08-22 01:12:16 字数 304 浏览 5 评论 0原文

我正在使用 foreach 循环来查询远程电脑,由于某种原因,查询某些电脑时程序会粘在电脑上(也许它在查询过程中被关闭),我怎样才能等待一段时间(尽管固定的时间长度是没有什么好处,因为有些人可能需要几分钟才能查询其他人(30 分钟),然后转到下一台电脑?

foreach (String pc in pcs)
            {
                if (bg_worker.CancellationPending) break; 
               ...
} 

谢谢玉

I'm using a foreach loop to query remote PCs, for some reason querying a certain PCs the program sticks on the PC (maybe it's been turned off mid query), how can I wait for awhile (although a fixed length of time would be no good as some can take minutes to query others 30 mins) and then move on to the next PC?

foreach (String pc in pcs)
            {
                if (bg_worker.CancellationPending) break; 
               ...
} 

Thanks

Jade

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

回眸一遍 2024-08-29 01:12:16

使用 线程池 进行查询同时适用于多个主机。这可以为您做三件事:

  1. 显着减少总扫描时间,因为当前您的程序可能花费大量时间等待响应。
  2. 允许您使用内置机制终止异步线程来实现超时
  3. 意味着“卡住”的 PC 在等待超时时不会停止所有扫描 - 只是该线程

Use a threadpool to query for several hosts simultaneously. This does three things for you:

  1. Dramatically reduce your total scan time, since currently your program is likely spending a lot of time waiting for responses.
  2. Allow you to use the built-in mechanisms to terminate asynchronous threads to implement your timeout
  3. Means a "stuck" PC won't stop all scanning while waiting to timeout - just that thread
绅士风度i 2024-08-29 01:12:16

请参阅 http://www.codeplex.com/smartthreadpool 它支持工作项取消。

See http://www.codeplex.com/smartthreadpool It supports work item cancelation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文