【发布时间】:2011-02-18 11:34:51
【问题描述】:
我的 .NET CF 3.5 Windows Mobile 6.5 应用程序有一个奇怪的情况。 我有 2 个线程。
在第一个线程中,我执行以下操作:
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();
在这两种情况下,网址都是相同的。第一个线程用于连接检查目的。它定期执行 WebRequest 以检查服务器是否可用并显示连接状态(代码中未显示)。第二个线程在同一服务器(url)上调用 WebService。我观察到,当一个线程正在执行 WebRequest 时,第二个线程在执行 Web 方法时被阻塞或事件超时。他们看起来都互相干扰。为什么?我想知道如果 Windows 移动网络堆栈意识到两个线程都转到同一个目标 IP:端口,它是否只是为两个线程创建一个套接字连接?会话呢?在桌面 Windows 上,我希望在客户端计算机上创建 2 个会话和至少 2 个套接字。 有人对 Windows Mobile(或 .NET CF)如何管理连接和套接字重用有任何提示吗?
问候
【问题讨论】:
标签: c# .net soap windows-mobile compact-framework