知识大全 实现异步调用Web Service,防止页面超时

Posted

篇首语:不塞不流,不止不行。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 实现异步调用Web Service,防止页面超时相关的知识,希望对你有一定的参考价值。

实现异步调用Web Service,防止页面超时  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  普通调用Web Service的方法 在Web Service执行期间客户端会一直等待服务执行完毕才能响应 从而造成客户端UI线程的阻塞假死现象 这时候 异步调用就显得很有用 它可以让客户端在调用Web Service时 不至于阻塞客户端的UI线程导致假死 还可以在调用Web Service的同时做些其他的处理 异步调用Web Service也有几种不同的方法 这里介绍常用的两种

  

        第一种方法 是通过利用Backgroundworker对象实现 BackgroundWorker 类允许你在单独的专用线程上运行操作 耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面(UI)似乎处于停止响应状态 如果你需要能进行响应的用户界面 而且面临与这类操作相关的长时间延迟 则可以使用 BackgroundWorker 类方便地解决问题

  

   private void button _Click(object sender EventArgs e)

  

  

  

       BackgroundWorker backgroundworker = new BackgroundWorker();

  

       //注册具体异步处理的方法

  

       backgroundworker DoWork += new DoWorkEventHandler(back_DoWork);

  

       //注册调用完成后的回调方法

  

       backgroundworker RunWorkerCompleted +=

  

           new RunWorkerCompletedEventHandler(back_RunWorkerCompleted);

  

       //这里开始异步调用

  

       backgroundworker RunWorkerAsync();

  

       //调用服务的同时客户端处理并不停止

  

       ChangeProcessBar();

  

  

  

   //完成事件

  

   void back_RunWorkerCompleted(object sender RunWorkerCompletedEventArgs e)

  

  

  

       if (e Error != null)

  

           throw e Error;

  

       progressBar Value = progressBar Maximum; //调用完成了 把客户端进度条填充满

  

       string price = e Result ToString();   //获取处理结果

  

       MessageBox Show( 调用完成 价格是 + price); //显示从服务器获取的结果值

  

  

  

   //调用方法

  

   void back_DoWork(object sender DoWorkEventArgs e)

  

  

  

       //Web Service代理类

  

       ProductService LTPService service = new ProductService LTPService();

  

       //调用Web方法GetClass 将结果赋值给DoWorkEventArgs的Result对象

  

       e Result = service GetProductPrice( );

  

  

  

   其中 ChangeProcessBar()方法是处理进度条控制显示的代码 用于代表其他的操作

  

   //<summary>

  

   //界面的进度条显示

  

   //</summary>

  

   void ChangeProcessBar()

  

  

  

       for (int i = ; i < ; i++)

  

      

  

           progressBar Value = i;

  

           System Threading Thread Sleep( );

  

      

  

  

  

  

  

         第二种方法 是调用Web Service的WebMethod中的Async方法实现 当添加完Web Service的引用以后 会在本地生成代理类 其中 会有一个和原Web Service方法名字相同而后缀是Async的方法

  

  

  

   private void button _Click(object sender EventArgs e)

  

  

  

       //Web Service代理类

  

       ProductService LTPService service = new ProductService LTPService();

  

       //这里开始异步调用

  

       service GetProductPriceAsync( );

  

       //注册调用完成后的回调方法

  

       service GetProductPriceCompleted += new ProductService

  

           GetProductPriceCompletedEventHandler(GetProductPriceCompleted);

  

       //调用同时客户端处理不停止

  

       ChangeProcessBar();

  

  

  

   //完成事件处理方法

  

   void GetProductPriceCompleted(object sender ProductService

  

                GetProductPriceCompletedEventArgs e)

  

  

  

       if (e Error != null)

  

           throw e Error;

  

       progressBar Value = progressBar Maximum; //调用完成了 把客户端进度条填充满

  

       string price = e Result ToString();         //获取处理结果

  

       MessageBox Show( 调用完成 价格是 + price); //显示从服务器获取的结果值

  

cha138/Article/program/net/201311/13918

相关参考

知识大全 动态IP的Web service调用

动态IP的Webservice调用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  系统架构需要使

知识大全 学好基本功之熟练调用 Web Service

学好基本功之熟练调用WebService  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  什么是W

知识大全 在ASP.NET Atlas中调用Web Service

在ASP.NETAtlas中调用WebService  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 使用eclipse调用.net web service

  以前我用的开发框架都是net现在换成javaEE框架和linux平台还需要一段时间的学习有时在测试工作中需要实现一些功能但是又不会用java实现怎么办呢?这里有一个方法使用net的框架开发webs

知识大全 ASP.NET 3.5核心编程之AJAX Web Service的调用

ASP.NET3.5核心编程之AJAXWebService的调用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 Spring中的service之间如何调用

Spring中的service之间如何调用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 Android MediaPlayer播放音乐有必要使用Service来调用吗

AndroidMediaPlayer播放音乐有必要使用Service来调用吗  以下文字资料是由(本站网www.cha138.com)小编为大家搜集整理后发布的内容,让我

知识大全 使用cxf写web service的简单实例

实例步骤      第一步在myeclipse中新建一个web项目名为webservicetest并导入依赖的jar包(cxfspringa

知识大全 使用Axis开发Web Service[2]

Java高级开发:使用Axis开发WebService[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 使用Axis开发Web Service[1]

Java高级开发:使用Axis开发WebService[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看