Silverlight + WCF异步调用 例子
看大家好像对我的NParsing框架不是很感兴趣(写NParsing帖没人顶我),那就给大家来点“甜品”,换换口谓。来说说Silverlight方面的东西。
在Silverlight中数据通信只能用异步。有人会觉得写起来很麻烦,其实不然。也有很简单的写法,一句话就能搞定。哈哈,下面看代码
吧。这是一个用户登录的功能。
首先是WCF异步调用接口定义:
代码
2 usingSystem.ServiceModel;
3 usingTest.Model;
4
5 namespaceTest.Silverlight.Client
6 {
7 [ServiceContract]
8 publicinterfaceIUserService
9 {
10 ///<summary>
11 ///用户登录
12 ///</summary>
13 ///<param name="username">用户名</param>
14 ///<param name="password">密码</param>
15 ///<param name="asyncCallback"></param>
16 ///<param name="asyncState"></param>
17 ///<returns>
18 ///0 登录失败
19 ///1 登录成功
20 ///2 用户不存
22 ///4 用户未审核
23 ///</returns>
24 [OperationContract(AsyncPattern =true)]
25 IAsyncResult BeginLogin(stringusername, stringpassword, AsyncCallback asyncCallback, objectasyncState);
26 intEndLogin(outUser userInfo, IAsyncResult result);
27 }
28 }
然后是WCF客户端通信代理类:
代码
2 usingSystem.ServiceModel;
3 usingSystem.ServiceModel.Channels;
4 usingTest.Model;
5
6 namespaceTest.Silverlight.Client
7 {
8 publicclassUserClient : ClientBase<IUserService>, IUserService
9 {
10 privatestaticreadonlyBinding binding =newBasicHttpBinding();
11 publicUserClient(EndpointAddress remoteAddress) : base(binding, remoteAddress)
12 {
13 }
14
15 publicIAsyncResult BeginLogin(stringusername, stringpassword, AsyncCallback asyncCallback, object
16
17 asyncState)
18 {
19 returnChannel.BeginLogin(username, password, asyncCallback, asyncState);
20 }
21
22 publicintEndLogin(outUser userInfo, IAsyncResult result)
23 {
24 returnChannel.EndLogin(outuserInfo, result);
25 }
26 }
27 }
最后就是Silverlight中怎么调用啦:
代码
2 usingSystem.IO;
3 usingSystem.Threading;
4 usingSystem.Windows;
5 usingSystem.Windows.Controls;
6 usingSystem.Windows.Input;
7 usingSystem.Windows.Media;
8 usingSystem.Windows.Media.Imaging;
9 usingTest.Model;
10 usingTest.Silverlight.Client;
11
12 namespaceTest.SilverlightApplication
13 {
14 publicpartialclassUserLogin : UserControl
15 {
16 privatereadonlyUserClient _UserClient =newUserClient(SystemData.UserService_EndpointAddress);
17 privatereadonlySynchronizationContext syn;
18
19 publicUserLogin()
20 {
21 syn =SynchronizationContext.Current;
22 InitializeComponent();
23 }
24
25 privatevoidbtnLogin_Click(objectsender, RoutedEventArgs e)
26 {
27 _UserClient.BeginLogin(txtUsername.Text.Trim(), txtPassword.Password.Trim(),
28 ar =>
29 {
30 User userInfo;
31 intiRet =((IUserService) ar.AsyncState).EndLogin(outuserInfo, ar);
32 syn.Post(obj =>
33 {
34 switch((int) obj)
35 {
36 case0:
37 MessageBox.Show("用户登录失败。", "提示信息", MessageBoxButton.OK);
38 break;
39 case1:
40 MessageBox.Show("用户登录成功。", "提示信息", MessageBoxButton.OK);
41 break;
42 case2:
43 case3:
44 MessageBox.Show("用户不存在或密码错误。", "提示信息", MessageBoxButton.OK);
45 break;
46 case4:
47 MessageBox.Show("用户未审核,请耐心等待。", "提示信息", MessageBoxButton.OK);
48 break;
49 }
50 },
51 iRet);
52 },
53 _UserClient);
54 }
55 }
56 }
好了,完成。
转载于:https://www.cnblogs.com/yinxiangpei/articles/2622245.html
Silverlight + WCF异步调用 例子相关推荐
- 异步调用WCF的方法需要小心的地方
直接使用下面的代码,由于client对象占用的资源没有被释放,会导致内存泄露 GetSimServiceReference.GetSimServiceClient client = new GetSi ...
- Ajax异步调用Web服务的例子
我这里是看的Dflying Chen的使用ASP.NET AJAX异步调用Web Service和页面中的类方法的一系列文章写出来的例子. 请Dflying Chen别介意.例子中没有最后一篇文章的的 ...
- linux c调用wcf服务,Silverlight+WCF实现跨域调用
在这篇文章中,WCF扮演服务器,向外提供LoginVaild服务:Silverlight扮演客户端,调用WCF提供的LoginVaild服务.思路有了,下面进行代码实现. 数据库脚本实现 新建T_Us ...
- 将一个简单远程调用的方式例子改为异步调用 -- 2
将一个简单远程调用的方式例子改为异步调用 第一版:https://www.cnblogs.com/nxzblogs/p/12766025.html 第二版:使用RxJava :(RxJava:http ...
- 将一个简单远程调用的方式例子改为异步调用
将一个简单远程调用的方式例子改为异步调用 package com.xsxy.asynctest.test03;import java.util.ArrayList; import java.util. ...
- Silverlight+WCF 实战-网络象棋最终篇之对战视频-上篇[客户端开启视频/注册编号/接收视频](五)...
前言: 近期在忙点"秋色园"的事情,所以网络象棋这一块文章就写的相对慢,而且刚好接上篇:Silverlight+WCF 实战-网络象棋最终篇之非线程阻塞倒计时窗口(四) 之后, ...
- Silverlight WCF 初尝小结
一年多的时间一直在等待Silverlight的稳定版本,但是从1.0 2.0 到现在的3.0BETA 一直吸引着我,于是终于按奈不住,一窥了Silverlight的魅力. Silverlight是什么 ...
- springboot 多线程_SpringBoot异步调用@Async
一. 什么是异步调用? 异步调用是相对于同步调用而言的,同步调用是指程序按预定顺序一步步执行,每一步必须等到上一步执行完后才能执行,异步调用则无需等待上一步程序执行完即可执行. 二. 如何实现异步调用 ...
- Silverlight+WCF 新手实例 象棋 主界面-棋谱-获取列表(三十八)
2019独角兽企业重金招聘Python工程师标准>>> 在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 在Silverlight+WCF 新手实例 象棋 主界 ...
最新文章
- 商汤科技总裁张文谈人工智能: 未来10年到20年会有巨大爆发 下一个井喷是AI+教育
- [转载]使用C#的BitmapData
- android源码framework下添加新资源的方法
- mac mysql 安装日志_Mac 安装 MySQL
- SringBoot项目使用maven打包,使用docker部署,并且使用thymeleaf作为模板引擎遇到的问题
- SecureCRT 或者 超级终端 始终无法ping通主机
- word2vec介绍
- 银行家算法实验报告c语言版,银行家算法实验报告C语言版.doc
- 正则表达式:日期格式的校验(日期+时间)
- 20个软件开发常用设计文档大全下载
- 白鹭引擎android打包,白鹭引擎能把动画打包成小程序吗
- 携程集团CMO孙波入选“2021亚太营销领袖50强”榜单
- 深入学习typedef和typename
- HDU 2815 扩展baby step giant step 算法
- 基于Python的《庆余年》评论分析
- 黑科技神器-uTools
- 神马js都是浮云-----限时秒杀
- 用C语言求解一元高次方程论文,一元高次方程C语言实现(最高五次
- 加工中心计算机编程自学,如何快速学习数控加工中心编程
- Latex输入大小写罗马数字
热门文章
- R语言对矩阵按某一列排序
- 只不过是R.java文件的特性-----出错信息:R.java was modified manually! Reverting to generated version!...
- python中for和while区别_Python学习第九篇——while和for的区别
- linux中管道符的简单使用
- SAS宏保存以便快速调用的三种解决方案(转载)
- sizeof(string)
- 纯CSS实现React Logo图形,内含详细解析
- 产品经理经验谈100篇(四)-B端交互设计规范
- 【APICloud系列|11】使用APPuploader申请ios开发证书及ios发布证书教程
- php 接入微信 验证,PHP实现微信公众平台企业号验证接口