Максимальный поток портов завершения используется асинхронными задачами, такими как Socket.Begin*
или Socket.*Async
и другими задачами, связанными с вводом-выводом. Я бы порекомендовал, если вы измените рабочие потоки, то вам следует просто проверить, каково текущее максимальное количество потоков завершения, прежде чем изменять значения:
int maxWorkerThreads;
int maxCompletionThreads;
// Get the maximum number of completion threads
ThreadPool.GetMaxThreads(out maxWorkerThreads, out maxCompletionThreads);
// Set the new max worker threads, but keep the old max completion threads
ThreadPool.SetMaxThreads(someDifferentValue, maxCompletionThreads);
Я думаю, что по умолчанию максимальное количество потоков завершения составляет 1000, но это может варьироваться от машины к машине. На всякий случай используйте значение, полученное из функции GetMaxThreads
.