菜的像徐坤
排名
7
文章
192
粉丝
15
评论
16
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

WCF 异步操作

5170人阅读 2021/4/25 9:51 总访问:960926 评论:0 收藏:0 手机
分类: .net

  前  言

tnblog

代码从上往下执行,代码没执行完不能进行其他的操作,这个时候就需要使用异步避免这个坑(功能类似于Ajax)

Service2 中存在一个乘积的方法,但是要等待两秒后才能执行(模拟代码比较多的时候,运行时间较长)

  1.  //wcf中的方法
  2.   public int Cheng(int a,int b)
  3.         {
  4.             System.Threading.Thread.Sleep(2000);
  5.             return a * b;
  6.         }

异步请求方法一 (开辟线程)

  1.             //命名空间
  2.             using System.Threading;
  3.             //方法一Thread
  4.             Thread thread = new Thread(() =>
  5.             {
  6.                //实例化方法
  7.                 Service2.Service2Client client = new Service2.Service2Client();
  8.                 
  9.                 string str = client.Cheng(23).ToString();
  10.                 MessageBox.Show(str);
  11.             });
  12.             //启动Thread 
  13.             thread.Start();
  14.             
  15.             
  16.             //命名空间
  17.             using System.Threading.Tasks;
  18.             //方法二Task
  19.             Task.Run(() =>
  20.             {
  21.                 Service2.Service2Client client = new Service2.Service2Client();
  22.                 string str = client.Cheng(23).ToString();
  23.                 MessageBox.Show(str);
  24.             });

异步请求方法二 (async,await)               调用异步方法(方法名Async)

  1.         //方法二async,await
  2.         //重新创建一个异步的方法,需要用的时候直接调方法就可以了
  3.         public async void ClientCheng() 
  4.         {
  5.             Service2.Service2Client client = new Service2.Service2Client();
  6.             int num = await client.ChengAsync(2,3);
  7.             MessageBox.Show(num.ToString());
  8.         }

异步请求方法三 (Wcf自带的异步)         

第一步:


第二步:

代码部分

  1.             //Wcf自带的异步
  2.             Service2.Service2Client client = new Service2.Service2Client();
  3.             //调用异步方法(方法名Async)
  4.             client.ChengAsync(56);
  5.             //方法名+Completed 事件
  6.             client.ChengCompleted += client_ChengCompleted; 
  7.             
  8.             
  9.              
  10.             //生成的事件
  11.               void client_ChengCompleted(object sender, Service2.ChengCompletedEventArgs e)
  12.                 {
  13.                 //e.Result代表方法的返回值
  14.                 
  15.                     MessageBox.Show("乘积是:" + e.Result);
  16.                 }


评价

WCF DuplexHttpBinding双向通信

一:建立接口CallbackContract = typeof(ICallback)指定需要回调通信的接口,该接口方法由前端实现[ServiceContract(Callba...

WCF net.tcp 双向通讯,以及发布iis问题

一:新建wcf服务 UserCallBack.svc[ServiceContract(CallbackContract=typeof(ICallback))]//指定UserCallBack回调接口 pu...

WCF使用X509证书数据加密

一:创建证书在VS2012 的DOS命令提示中,输入下面的命令创建两个证书makecert.exe -sr LocalMachine -ss My -a sha1 -n CN=...

WCF自定义用户名密码验证

一:创建证书 makecert.exe -sr LocalMachine -ss My -a sha1 -n CN=TestServer -sky exchange -pe二;建立wcf服务 配置文...

winform+WCF(netTcpBinding)双向通讯 自定义用户名密码验证

一:创建证书 使用vs的命令创建 makecert.exe -sr LocalMachine -ss My -a sha1 -n CN=TestServer -sky exchange -p...

引用WCF常见异常

一:ASP.NET MVC添加wcf服务成功,但不能生成配置文件,不能使用 而且在winfrom,siverlight都能使用成功 把重新使用的...

WCF大数据传输配置

传输大数据到服务器端只需要在wcf服务端配置默认的超过65535B时就会出现(413) Request Entity Too Large的异常改变默认的传...

WCF接口配置文件所遇到的错

首先创建DAL类库在里面使用EF连接数据库创建实体把连接字符串复制到主体项目中的Web.config中的configuration中下面第一个...

WCF客户端数据条数超出限制

在SqlServer中使用循环语句添加多条测试数据在WCF客户端调用数据库数据超出限制最大限制条数这时就会报错。此时可以进行修...

webservice和WCF和web.api简单介绍

在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API。在.net平台下,你有很多的选择...

WCF 接口使用基础

新建一个WCF服务添加方法一个特性对应一个方法最后将项目发布WCF接口就算是创建好了调用和Webservice一样的

WCF 控制台发布

前言WCF 不仅可以通过IIS发布,还可以通过控制台发布代码部分//引入命名空间 usingSystem.ServiceModel; using(Service...

WCF异步操作

//先创建一个MVC项目然后创建一个Wcfservies publicclassService2:IService2 { publicintSum(inta,intb) {//将输出延迟...

WCF 控制台发布

staticvoidMain(string[]args) { using(ServiceHostser=newServiceHost(typeof(Service1))){ ser.Opening+=ser_Opening;...

WCF控制台发布

代码如下:usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threadi...