Если вы говорите о компоненте, который не настроен для обеспечения безопасности в многопоточной среде, тогда ответ - да. Однако вы должны выбрать механизм, который «синхронизирует» доступ к компоненту. Самая простая форма в C # - это синтаксис блокировки.
Если вы говорите о компоненте, который допускает только один экземпляр за раз, тогда ответ - нет. Это связано с тем, что веб-приложения являются многопоточными. Использование его в asp.net потребует от вас блокировки всего сервера в ожидании завершения работы компонента, что, как правило, плохо.
Мое лучшее решение для этого состоит в том, чтобы сделать использование такого компонента асинхронной операцией. Разрешить пользователю указывать входные параметры, затем сохранять эти данные где-нибудь и использовать какой-либо планировщик для обработки данных по одному. Когда процесс завершится, уведомите пользователя, что работа выполнена и т. Д.
Кроме того, когда компоненту требуется много времени для обработки, лучше все равно не позволять пользователю взаимодействовать с компонентом синхронно.