Settimeout异步Web服务调用?

时间:2013-03-18 10:21:28

标签: c# web-services asynchronous

我的Web服务继承自System.Web.Services.Protocols.SoapHttpClientProtocol

我尝试设置超时:

service.Timeout = 5000; // 5 secs

但没有任何反应 - 既不是TimeoutException也不是其他任何东西。一旦我在没有任何声明的情况下尝试了它,"Connection Timed Out"需要190秒。我认为190是奇怪的,默认值是100秒。

无论如何,Timeout Property似乎只能用于“同步”同步调用,所以在我的情况下,我不知道为什么它不起作用。

我正在调用异步方法:

service.GetInfoCompleted += service_GetInfoCompleted;
service.GetInfoAsync();

我怎么能解决我的问题?

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:1)

由于没有“本地”方式 - 我必须实现自己的Timer

经过时间后b.e 10秒我可以调用异步方法调用的Abort()

答案 1 :(得分:0)

您的service.GetInfoAsync()应返回IAsyncResult。您可以等待5秒钟来完成操作,如果没有,则处理超时:

var result = service.GetInfoAsync();

if(!result.AsyncWaitHandle.WaitOne(5000)){
     // handle timeout
}