读书人

WebService异步调用中的超时设置有关问

发布时间: 2012-02-13 17:20:26 作者: rapoo

WebService异步调用中的超时设置问题。
我需要异步调用WebService,以便在客户端网络不通的情况下,先显示一个等待页面。等有响应后,在继续。代码如下:
private string AsyncGetServerVersion(GetVersion ver,string localPartName,string localVersionNum)
{
IAsyncResult result;

result = ver.BeginReturnPathFromServer(localPartName,localVersionNum,null,null);
Form fWait = new Form();
fWait.StartPosition = FormStartPosition.CenterScreen;
fWait.Height = 150;
fWait.Width = 300;
fWait.Location = this.Location;
fWait.Show();
Application.DoEvents();
fWait.Text = "正在连接网络,请稍等 ";
result.AsyncWaitHandle.WaitOne();
fWait.Close();
string downloadName = ver.EndReturnPathFromServer(result);
return downloadName;
}

为了缩短等待时间,我在代理类中添加了如下代码,来设置超时时间:
//通过重载来设置超时时间
protected override WebRequest GetWebRequest(Uri uri)
{
HttpWebRequest wr = (HttpWebRequest)base.GetWebRequest( uri );
wr.Timeout = 10*1000;
return wr;
}

之后问题出现了。
如果我调用的是同步方法,比如:ver.ReturnPathFromServer(...);
那么设置的这个超时时间的是有效的。
如果我调用的是异步方法,那么这个超时时间好像一点效果都没有。

问:为什么会出现这样的问题,在异步情况下,我怎么设置超时时间?


[解决办法]
我刚好也遇到这个问题,帮楼主顶!
[解决办法]
参考http://www.cnblogs.com/oscarxie/archive/2007/01/13/619493.aspx
[解决办法]
ref:http://www.rainsts.net/article.asp?id=166

读书人网 >C#

热点推荐