Как AppDomain инициализируется в приложении navite, в котором размещаются компоненты .NET - PullRequest
0 голосов
/ 06 октября 2010

У нас есть некоторые классы .NET, представленные как компоненты COM.У клиента есть служба, которая использует эти компоненты COM из многопоточного приложения C ++.В целом все работает нормально, но в некоторых случаях мы видим проблемы с очередями запросов в System.Threading.Threadpool в этой среде.По сути, когда мы ставим в очередь работу пользователя, используя System.Threading.ThreadPool.QueueUserWorkItem, мы получаем ложное возвращение, даже если одновременно выполняется не более 15-20 одновременных запросов.Этот сервис работает на четырехъядерном сервере и на самом деле не испытывает значительных нагрузок на ресурсы.Из COM-компонентов .NET мы ставим в очередь некоторые вызовы веб-служб, так как мы не хотим задерживать общую последовательность обработки, пока они выполняются (в основном они запускаются и запускают задачи типа).

Так что яМне интересно, есть ли у кого-нибудь понимание того, как домены Applicaion инициализируются из такой среды, чтобы я мог попытаться начать отслеживать эту проблему.

С уважением

Ноэль.

1 Ответ

0 голосов
/ 06 октября 2010

Документация для возвращаемого значения QueueUserWorkItem гласит:

true , если метод успешно поставлен в очередь; NotSupportedException выбрасывается, если рабочий элемент не может быть поставлен в очередь.

Который, по-видимому, не допускает ложного возврата. Поэтому либо проведите время с .NET Reflector, понимая, что означает «ложь» из этого метода, либо поговорите с Microsoft (либо есть документация, либо ошибка реализации). Если вы выберете последний путь, соберите самое короткое воссоздание, которое вы можете.

...