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


欢迎加群交流技术

前 言
tnblog
代码从上往下执行,代码没执行完不能进行其他的操作,这个时候就需要使用异步避免这个坑(功能类似于Ajax)
Service2 中存在一个乘积的方法,但是要等待两秒后才能执行(模拟代码比较多的时候,运行时间较长)
- //wcf中的方法
- public int Cheng(int a,int b)
- {
- System.Threading.Thread.Sleep(2000);
- return a * b;
- }
异步请求方法一 (开辟线程)
- //命名空间
- using System.Threading;
- //方法一Thread
- Thread thread = new Thread(() =>
- {
- //实例化方法
- Service2.Service2Client client = new Service2.Service2Client();
-
- string str = client.Cheng(2, 3).ToString();
- MessageBox.Show(str);
- });
- //启动Thread
- thread.Start();
-
-
- //命名空间
- using System.Threading.Tasks;
- //方法二Task
- Task.Run(() =>
- {
- Service2.Service2Client client = new Service2.Service2Client();
- string str = client.Cheng(2, 3).ToString();
- MessageBox.Show(str);
- });
异步请求方法二 (async,await) 调用异步方法(方法名Async)
- //方法二async,await
- //重新创建一个异步的方法,需要用的时候直接调方法就可以了
- public async void ClientCheng()
- {
- Service2.Service2Client client = new Service2.Service2Client();
- int num = await client.ChengAsync(2,3);
- MessageBox.Show(num.ToString());
- }
异步请求方法三 (Wcf自带的异步)
第一步:
第二步:
代码部分
- //Wcf自带的异步
- Service2.Service2Client client = new Service2.Service2Client();
- //调用异步方法(方法名Async)
- client.ChengAsync(5, 6);
- //方法名+Completed 事件
- client.ChengCompleted += client_ChengCompleted;
-
-
-
- //生成的事件
- void client_ChengCompleted(object sender, Service2.ChengCompletedEventArgs e)
- {
- //e.Result代表方法的返回值
-
- MessageBox.Show("乘积是:" + e.Result);
- }
评价