最近在MSDN上看到一个在.NET1.1中Winform程序异步调用WebService的例子
我准备模仿着迁移到.NET2.0环境中,遗憾的是,一切不是那么简单。

首先,.net1.1中调用的WebService的详细说明,可以上MSDN WebCasts 下载一个视频讲座和Demo代码。
或者也可以参见TerryLee的Blog :http://www.cnblogs.com/Terrylee/archive/2005/12/05/290845.html

文中详细说明了在Service被引用之后的一个类文件Reference.cs中,会有“Begin<WebServiceMethodName>和End<WebServiceMethodName>”("<"、">"中的内容是web service中调用的方法)。

这样可以在客户端(和服务器端)都可以通过proxy、回调等方法,实现异步调用Web Service。

但是,.Net 2.0中的类文件Reference.cs,本身就运用了proxy、回调等方法,这样,在客户端就可以这样实现了:
        private localhost.Service service = new AsyncClient.localhost.Service();

private void btnSet_Click(object sender, EventArgs e)
        {
            service.HelloCompleted += new AsyncClient.localhost.HelloCompletedEventHandler(AsyncCall_ClientProxy);
            service.HelloAsync(this.txtName.Text);
        }
        private void AsyncCall_ClientProxy(object sender, AsyncClient.localhost.HelloCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                this.txtResult.Text = e.Result;
            }
            else
            {
               this.txtResult.Text = e.Error.Message;
            }
        }
因为,我们可以看到,在Reference.cs中有这样的几个方法:
/// <remarks/>
        public void HelloAsync(string strName) {
            this.HelloAsync(strName, null);
        }
       
        /// <remarks/>
        public void HelloAsync(string strName, object userState) {
            if ((this.HelloOperationCompleted == null)) {
                this.HelloOperationCompleted = new System.Threading.SendOrPostCallback(this.OnHelloOperationCompleted);
            }
            this.InvokeAsync("Hello", new object[] {strName}, this.HelloOperationCompleted, userState);
        }
       
        private void OnHelloOperationCompleted(object arg) {
            if ((this.HelloCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.HelloCompleted(this, new HelloCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }

Demo下载:http://files.cnblogs.com/lxinxuan/AsyncWebService.rar
[WSE3.0实现的部分还没有增加]

注:部分代码来自网上。

.NET2.0中,Winform程序如何异步调用Web Service呢?[Demo下载]——与.net1.1环境下比较...相关推荐

  1. 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(2):处理异步调用中的异常...

    本文来自<ASP.NET AJAX程序设计 第II卷:客户端Microsoft AJAX Library相关>的第三章<异步调用Web Service和页面中的类方法>,请同时 ...

  2. .NET应用程序中异步调用Web Service的几种方法 come from: veryhappy(wx.net)

    测试程序界面 图一,调用前界面 图二,调用后界面 详细代码实现 闲言少叙,直接进入主题吧.首先一个声明一个类(将来在客户端与服务器间传递): public class Class1     {     ...

  3. Ajax异步调用Web服务的例子

    我这里是看的Dflying Chen的使用ASP.NET AJAX异步调用Web Service和页面中的类方法的一系列文章写出来的例子. 请Dflying Chen别介意.例子中没有最后一篇文章的的 ...

  4. Android 项目开发 基于Web Service 服务的中英翻译软件(三) Web Service服务 Ksoap2 项目...

    关于Web Service Android 应用通常是运行手机平台上,手机系统的硬件资源远远比不上PC平台,不管是存储能力还是计算能力,在Android平台上运行一些小的应用时可能的,但对于需要进行大 ...

  5. [Teamcenter 2007 开发实战] 调用web service

    前言 在TC的服务端开发中, 可以使用gsoap 来调用web service. 如何使用 gsoap  , 参考 gsoap 实现 C/C++ 调用web service 接下来介绍如何在TC中进行 ...

  6. 深度解析ASP.NET2.0中的Callback机制

    callback的一般使用方法还算简单,直接参照msdn的帮助和范例就足够了.但是想要真正用好.用精,或者想开发一些基于callback机制的WEB组件,那么,就要先深入了解callback的实现机制 ...

  7. C#中Winform程序中如何实现多维表头【不通过第三方报表程序】

    问题:C#中Winform程序中如何实现多维表头. 在网上搜了很多方法,大多数方法对于我这种新手,看的都不是很懂.最后在新浪博客看到了一篇比较易懂的文章:[DataGridView二维表头与合并单元格 ...

  8. winform关闭当前form_C#中WinForm程序退出方法技巧总结

    C#中WinForm程序退出方法技巧总结 一.关闭窗体 在c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit();Application.Ex ...

  9. winform4、C#中WinForm程序退出方法(释放资源)

    winform4.C#中WinForm程序退出方法(释放资源) 有以下方式 1.this.Close(); 只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干 ...

最新文章

  1. 命令行选项“/source-charset”与预编译头不一致
  2. ERP实施成功与否,企业文化是致命因素?
  3. 040_CSS3背景
  4. str()和repre()的区别
  5. 未雨绸缪 | 一文简介 Azure Front Door
  6. 转 常量指针和指针常量的区别详解
  7. Wordpress世界最牛?做网站用国内cms建站系统才是正道
  8. java海康摄像头添加人脸_java调用海康人脸识别机5603的sdk的使用总结(二)
  9. Office 2010安装1402错误
  10. 【行业专题报告】酒类(白酒、啤酒)-专题资料
  11. ppt如何替换其他mo ban_相见恨晚的10个PPT制作小技巧!提高你的PPT制作效率
  12. java offset什么意思_java – “offset或count可能接近-1 1”这是什么意思
  13. 最全阿里架构师P系列解读:P5-P8的技能要求和薪资结构
  14. GICv3软件overview手册之GICv3基本功能(1)
  15. Siammask源码demo运行配置
  16. 内联框架和音视频播放
  17. Follow me 总结
  18. 查看域名证书到期时间
  19. 紧急通知,您的苹果手机可能已经安装了木马软件
  20. 计算机网络指令截图,windows常用快捷键,截图命令你知道吗-win7全屏

热门文章

  1. python是开源的.它可以被移植_python是开源的,它可以被移植到许多平台上,是对的吗?...
  2. linux常用知识命令
  3. java分配数组空间使用的关键字_创建数组时为数组元素分配内存空间的 Java 关键字是________(5.0分)_学小易找答案...
  4. python百分号字符串_python--003--百分号字符串拼接、format
  5. linux 内核协议栈 ip_rcv_finish,Linux内核协议栈学习笔记(二)--netfilter框架
  6. java修改cookie的值_Java管理Cookie增删改查操作。
  7. python cms api_python3 获取阿里云OSS 最新存储容量 SDK API
  8. latex sign_LATEX科研论文写作教程
  9. 北京大学生物信息学 (4)序列数据库
  10. linux deepin 15.9双系统,windows10安装双系统Deepin15.9遇到的坑