Мое приложение асинхронно загружает большой объем информации из веб-службы и "Application_Start".
Если запрос пользователя хочет использовать эту информацию, и он не готов, поток будет заблокирован с помощьюMonitor.Wait.Когда информация будет готова, объект кэша будет Monitor.Pulse всех ожидающих потоков.Это должно быть хорошо, так как информация занимает десяток секунд, и пользователь должен быть перенаправлен на страницу входа в систему, опубликовать информацию для входа и быть перенаправлен снова.
Проблема в том, что Monitor.Wait будетзаблокировать поток CLR ThreadPool, и, насколько мне известно, при поступлении пакета запросов, запрашивающих «большую информацию», приложение может остаться заблокированным из-за голодания CLR ThreadPool (у меня небольшой беспорядок с текущим потоком IIS / ASP.NETgating).
Поскольку большая часть информации поступает от веб-службы, которую я вызываю асинхронно, у меня есть IAsyncResult этой операции.
Итак, есть ли способ сообщить потоку CLR ThreadPool «Ожидание этого IOCP», чтобы поток пула потоков мог начать посещать другой вызов?
У меня такое ощущение, что это не такхорошо объясненный, дайте мне знать, если неясно, о чем я спрашиваю.
С уважением.
PS: Хотя щедрость закончена, если кто-нибудь знает способ сделать это, я поднимуновый и предоставьте автору.