麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

封裝WebService的APM為Async、Await模式利于Asp.Net頁面調(diào)用

2019-11-17 02:03:13
字體:
供稿:網(wǎng)友

封裝WebService的APM為Async、Await模式利于asp.net頁面調(diào)用

Wcf針對Async、Await指令直接可以返回Task<T>結(jié)果,但是老舊的系統(tǒng)中還是會有很多是在用Soap的Webservice。直接在Asp.Net頁面調(diào)用APM方法確實比較麻煩,其實可以直接用TaskFactory封裝APM模式為.Net4.5的async await模式,便于頁面調(diào)用。

下面上實現(xiàn)代碼,不多廢話,注意注釋:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;using System.Web;using System.Web.Services.PRotocols;using System.Web.UI;using System.Web.UI.WebControls;namespace Webapplication1{    public partial class _Default : Page    {        protected async void Page_Load(object sender, EventArgs e)        {            //這里不直接用AsyncWebService而用父類SoapHttpClientProtocol的原因是:以后可以針對不同的webservice復(fù)用            SoapHttpClientProtocol soapHttpClient = new global::AsyncWebService("http://localhost:3115/AsyncWebService.asmx");            //反射創(chuàng)建APM方法異步委托            var beginFunc = soapHttpClient.GetType()                .GetMethod("BeginHelloWorld")                .CreateDelegate(typeof(Func<string, System.AsyncCallback, object, IAsyncResult>), soapHttpClient) as Func<string, System.AsyncCallback, object, IAsyncResult>;            var endFunc = soapHttpClient.GetType()                .GetMethod("EndHelloWorld")                .CreateDelegate(typeof(Func<IAsyncResult, string>), soapHttpClient) as Func<IAsyncResult, string>;            //打印一下調(diào)用異步前線程ID            StringBuilder sb = new StringBuilder();            sb.Append("<br />");            sb.Append("Befort Thread Id:" + Thread.CurrentThread.ManagedThreadId);            sb.Append("<br />");            //用TaskFactory封裝APM模式為.Net4.5的async await模式            string result = await Task<string>.Factory.FromAsync<string>(beginFunc,                endFunc, "zhang san", null);            //打印一下調(diào)用異步后線程ID            sb.Append("After Thread Id:" + Thread.CurrentThread.ManagedThreadId);            sb.Append("<br />");            sb.Append(result);            ltlResult.Text = sb.ToString();        }    }}

注意需要在Aspx前臺啟用Async="true"特性。

看一下最終的效果:

image

前臺隨便敲了點樣式:

<div style="padding: 0;background-color: black;color: white;height:100%;width: 100%;margin: 0 auto;font-size:xx-large;"> <h6>Test Async</h6> <p style="color: yellow;"> <asp:Literal ID="ltlResult" runat="server"></asp:Literal> </p> </div>

本文代碼:http://files.VEVb.com/files/12taotie21/WebApplication1.rar


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久久久亚洲国产精品 | 欧美日韩1区2区 | 黄色片网站免费 | 免费a视频在线观看 | 久久成人福利 | 亚洲午夜电影 | 久草在线观看福利 | 欧美精品久久久久久久久久 | 日韩毛片网 | 手机国产乱子伦精品视频 | 国产精品久久久久无码av | 亚洲乱搞 | 久久精品无码一区二区日韩av | 欧美日韩大片在线观看 | 7777视频| 99re久久最新地址获取 | 亚洲免费看片网站 | 羞羞视频免费观看网站 | 亚洲第一成人av | 久久精品国产亚洲7777小说 | 爱唯侦察 国产合集 亚洲 | 成人不卡免费视频 | 777zyz色资源站在线观看 | 99精品视频一区二区三区 | 国产超碰人人爽人人做人人爱 | asian附近女人裸体pics | 国产精品一 | 国产又粗又爽又深的免费视频 | 在线观看免费污视频 | 免费视频99 | 国产午夜精品在线 | 毛片小网站 | 羞羞视频免费网站含羞草 | 国产成人高清成人av片在线看 | 国产一级性生活视频 | 国产毛片aaa一区二区三区视频 | aaaaa国产欧美一区二区 | 黄色特级毛片 | 国产精品视频免费在线观看 | 久久色网站 | 国产精品一区99 |