Когда я запрашиваю большое количество удаленных сетевых компьютеров, как я могу использовать тайм-аут в цикле foreach? - PullRequest
0 голосов
/ 18 февраля 2010

Я использую цикл foreach для запроса удаленных ПК, по какой-то причине запрашивая определенные ПК, которые программа прикрепляет к ПК (возможно, он был отключен в середине запроса), как я могу ждать некоторое время (хотя фиксированная длина время было бы плохим, так как некоторым может потребоваться несколько минут, чтобы запросить у других 30 минут), а затем перейти к следующему ПК?

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

Спасибо

Jade

Ответы [ 2 ]

2 голосов
/ 18 февраля 2010

Используйте threadpool для запроса нескольких хостов одновременно. Это делает три вещи для вас:

  1. Значительно сократите общее время сканирования, поскольку в настоящее время ваша программа, вероятно, тратит много времени на ожидание ответов.
  2. Позволяет вам использовать встроенные механизмы для завершения асинхронных потоков для реализации вашего тайм-аута
  3. Означает, что "зависший" компьютер не остановит все сканирование в ожидании тайм-аута - только этот поток
0 голосов
/ 18 февраля 2010

См. http://www.codeplex.com/smartthreadpool Поддерживается отмена рабочего элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...