有时C#webservice调用永远不会超时

时间:2015-07-20 02:11:44

标签: c# web-services windows-mobile compact-framework windows-ce

我有一个使用.net CF 3.5为Windows mobile和windows ce应用程序编写的应用程序。它使用SOAP Web服务从我们的服务器下载数据并将数据上传到我们的服务器。我们使用自动生成的Web引用来调用服务。

通常,如果无法从服务器获得响应,对Web服务的调用将会超时,但有时对Web服务的调用将永远不会超时并将无限期挂起。我可以通过模拟50%的数据包丢失来合理地发生这种情况。

为了解决这个问题,我一直在创建一个单独的线程来运行调用,并在4分钟后中止线程。我不能在Web引用对象上调用abort(),因为它也会无限期地挂起。这解决了当前的问题,但是,每次我这样做都会泄漏内存,如果我检查进程中的线程,每次都会有两个以上的线程。最终,应用程序将耗尽所有系统内存并将崩溃。

据我所知,Web引用使用的HttpWebRequest使用自己的线程池来运行请求,并且每次这些请求挂起时都会创建另外两个线程来运行新请求。

我在运行不同版本的Windows Mobile和Windows CE的许多Motorola和Intermec设备上测试了这一点,并且在所有这些设备上都存在同样的问题。

有谁知道如何阻止webservice调用无限期挂起?

0 个答案:

没有答案
相关问题