Если это весь код, то ошибка, вероятно, вызвана тем, что вы просто провалились до конца main()
, не дожидаясь завершения всех потоков вашего пула потоков. Все потоки ThreadPool
прерываются после выхода из основного потока после провала через main()
.
Попробуйте удалить Thread.Sleep(100)
(это не нужно, это неправильный способ, вы никогда не узнаете, как долго вы будете спать, и это частично откажется от цели использования ThreadPool
в первую очередь), и вы, вероятно, даже не проверить ни одного порта!
Вместо этого вы можете настроить каждый из рабочих потоков на событие и использовать WaitAll
в main для завершения всех событий. См. http://msdn.microsoft.com/en-us/library/3dasc8as.aspx для примера.
Изменить:
Подумав об этом, решение, на которое ссылается ссылка выше, вероятно, также не идеально подходит для вас (это может потребовать выделения массива из 65000 событий, это было бы чрезмерно). В .net 4 вы можете использовать CountdownEvent
так:
Извините, я должен бежать, но посмотрите этот пример http://msdn.microsoft.com/en-us/library/system.threading.countdownevent.aspx и сообщите нам, когда у вас возникнут дополнительные вопросы, я уверен, что кто-то может и будет разрабатывать или предлагать лучшее решение и решение, более подходящее для этого. net3