Может быть, вы хотите сделать это вместо:
Loaded += (sender, args) =>
{
ThreadPool.QueueUserWorkItem(dummy =>
{
for (int i = 0; i < 5; i++)
{
ThreadPool.QueueUserWorkItem(state =>
{
var request = WebRequest.CreateHttp("http://google.com");
request.BeginGetResponse(ar => Debug.WriteLine("Request finished"), null);
});
Thread.Sleep(1000);
}
});
};
Это совсем не блокирует пользовательский интерфейс, и сообщение отладки приходит каждую секунду. Или каково было бы ваше желаемое поведение? Вы действительно хотите заблокировать пользовательский интерфейс (вы не должны ...)?
РЕДАКТИРОВАТЬ (после редактирования):
Понятно. Это немного нелогично, и у меня нет ответа сразу. Я сильно подозреваю, что запрос требует некоторой активности потока пользовательского интерфейса. Ваш основной поток всегда должен быть отзывчивым и никогда не блокировать, так что это не будет проблемой. Если только вы не заблокируете основной поток. Таким образом, они могли бы избавиться от работы по оптимизации для ошибочного случая (что это такое).
Тем не менее ответ будет интересным. Я знаю из мира настольных компьютеров, что материал, связанный с браузером, нуждается в основной теме. Поэтому я рекомендую больше не блокировать его:)