Потокобезопасный поток из WebResponse.GetResponseStream()
передается другому потоку, который будет читать stream
до конца и Close()
его.stream.synchronized()
используется для обеспечения безопасности потока потока:
// Thread A
HttpWebResponse response = request.GetResponse();
return Stream.Synchronized(response.GetResponseStream());
// Thread B
// Read the stream to the end
stream.Close(); // Here thread doesn't get back
Тема B находится под контролем другой темы, которая не является предметом этого вопроса (тема C).Единственное, что относится к потоку C, это то, что если поток B не выйдет должным образом, он будет Abort()
потоком B. Проблема в том, что поток B зависает на stream.Close()
и он всегда прерывается потоком C. Независимо от времени ожидания (используется ручка ожидания с тайм-аутом)) Я установил, поток B не пройдет эту линию, и в течение тайм-аута CPU составляет 100%
Что я делаю не так?