Я нахожусь в процессе тестирования производительности критической части моего проекта, когда замечаю множество дополнительных потоков, используемых для выполнения операций WaitOrTimerCallback.
альтернативный текст http://lh4.ggpht.com/_p7-jVU64mGg/SZuWgUvTD7I/AAAAAAAAAEk/PUFrXrYvZh0/threads_thumb%5B1%5D.jpg?imgmax=800
При ближайшем рассмотрении я вижу, что они создаются моим прокси-классом клиента ASMX для операций на удаленном сервере.
У меня сложилось впечатление, что они используют порты завершения ввода-вывода, как и все мои другие асинхронные вызовы ввода-вывода.
Можно ли заставить прокси-клиента ASMX или WCF использовать порты завершения ввода-вывода? Если нет - то какой смысл?
[ОБНОВЛЕНО]
В проекте использовались прокси-клиенты ASMX. Похоже, что они используют обычный порядок пулов потоков для регистрации WaitOrTimerCallback. Я сейчас работаю с клиентами прокси WCF. Это не порождающие лишние потоки, поэтому я могу только предположить, что они используют нужные порты завершения ввода-вывода.
Класс Proxy ASMX был создан с использованием Visual Studio 2008. Я добавил следующую строку в файл проекта: «WebReference_EnableLegacyEventingModel> true» Поскольку в текущем варианте клиентов ASMX по умолчанию не включена Асинхронная.