У меня странная ситуация в моем приложении .NET CF 3.5 для Windows Mobile 6.5.
У меня есть 2 темы.
В 1-й теме я делаю следующее:
try
{
String url = "http://myserverurl";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
_currentRequest = request;
request.Timeout = 10000;
response = (HttpWebResponse)request.GetResponse();
ConnectionStatus connStatus = response.StatusCode == HttpStatusCode.OK;
response.Close();
}
catch (Exception e)
{
//log e
}
finally
{
}
В 2n потоке вызов WebService через класс, основанный на SoapHttpClientProtocol, сгенерированный ссылкой WebService.
soapClient.Url = "http://myserverurl";
soapClient.MethodOnWebService();
В обоих случаях URL-адрес одинаков. 1-й поток используется для проверки соединения. Он периодически выполняет WebRequest, чтобы проверить, доступен ли сервер, и отображает состояние соединения (не показано в коде). Второй поток вызывает WebService на том же сервере (URL). Я заметил, что когда один поток выполняет WebRequest, второй блокируется, или время отображается во время выполнения веб-метода. Они оба выглядят как мешающие друг другу. Зачем? Интересно, если стек Windows Mobile просто создает только одно сокетное соединение для обоих потоков, если он понимает, что оба идут к одному и тому же целевому IP: порту? Что насчет сессий? В настольной Windows я ожидал, что будет создано 2 сессии и как минимум 2 сокета на клиентском компьютере.
У кого-нибудь есть советы о том, как Windows Mobile (или .NET CF) управляет соединениями и повторным использованием сокетов?
Привет