试一下让它停了30秒后就End掉AsyncCallback cb = new AsyncCallback(myCallback2);
IAsyncResult ar = speedway.BeginAskAccept(certificate1, mybyte, cb, speedway);System.Threading.Thread.Sleep(30000);
if(!ar.IsCompleted)
{
cb.EndInvoke(ar);
} private static void myCallback2(IAsyncResult ar)
{
MySpeedwayWebService.Speedway speedway = (MySpeedwayWebService.Speedway)ar.AsyncState;
int iRet = speedway.EndAskAccept(ar);
MessageBox.Show("返回值:" + iRet.ToString() + "\n" + DateTime.Now.ToString());
}

解决方案 »

  1.   

    to panyee(快乐王子)  :
    我想问一下,异步调用会不会出现超时情况呢?如果有超时会不会造成占用系统资源不释放情况呢?
      

  2.   

    是不释放, 只能等.net过一段时间自动回收好点的办法是, 在调用web service之前, 用xmlhttp或webhttprequest的方式去连接一下asmx页面,如果正常,就访问,否则就不访问它因为正常情况下,web service很少出现超时以前试了用web service传大文件, 用winform创建的代理类就用异步调用的方式, 有时出错了, 永远都没返回, 但我程序关掉以后, 就没什么事了
    具体也没有作深入研究
      

  3.   

    我的程序也是winform调用webservice 而且还是定时器大概每秒钟去请求一次数据,
    网络条件好的时候是每有问题的,可是我们的客户网络条件差,有时候就出现问题了。
      

  4.   

    如果是每秒钟就一个请求, 那好像太快了, web service并不是很适合啊