国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

asp.net2.0中異步調(diào)用WebService(異步頁)

2019-11-18 17:08:36
字體:
供稿:網(wǎng)友

由于asp2.0提供了異步頁的支持使異步調(diào)用WebService的性能有了真正的提升。
使用異步頁,首先要設(shè)置Async="true",異步頁是在PRerender和PrerenderComplete事件間加入Begin,end異步方法實(shí)現(xiàn)的,Begin和End方法屬于不同的線程。
WS異步頁的實(shí)現(xiàn)有兩種方式:
1、使用等待方法實(shí)現(xiàn)異步
通用類,封裝了WS
/**//// <summary>
        /// 使用等待方法實(shí)現(xiàn)異步
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        private Account account;
        private string username;
        public Account Account
        {
            get { return account; }
            set { account = value; }
        }
        public string Username
        {
            get { return username; }
            set { username = value; }
        }
        public IAsyncResult BeginAsyncGetAccount(object sender, EventArgs e, AsyncCallback cb, object state)
        {
          
            return vb.BeginGetAccountbyName(username,cb,state);
        }
        public void EndAsyncGetAccount(IAsyncResult ar)
        {
            account = vb.EndGetAccountbyName(ar);
        }

          /**//// <summary>
        /// 使用事件驅(qū)動的異步
        /// </summary>
        /// <param name="username"></param>
        public void GetAccountCompleted(Object source, VB.GetAccountbyNameCompletedEventArgs e)
        {
            account = e.Result;
        }
        public void AsGetAccount(string username)
        {
                      vb.GetAccountbyNameCompleted += new GetAccountbyNameCompletedEventHandler(GetAccountCompleted);
            vb.GetAccountbyNameAsync(username)
           
        }調(diào)用方法
 protected void Page_Load(object sender, EventArgs e)
    {
        this.PreRenderComplete += new EventHandler(Page_PreRenderComplete);
        b.Username = "dinghao";
      
        AddOnPreRenderCompleteAsync(b.BeginAsyncGetAccount, b.EndAsyncGetAccount);
    }
    protected void Page_PreRenderComplete(object sender, EventArgs e)
    {
        //異步調(diào)用結(jié)束
        VB.Account a = b.Account;
        AccountIf ai = new AccountIf(a);
        ais[0] = ai;
        GridView1.DataSource = ais;
        GridView1.DataBind();
    }由于AddOnPreRenderCompleteAsync的兩個(gè)委托都是Void類型,所以在通用類中要加入有返回值的屬性如:Account供主調(diào)方法使用,另外委托中沒有異步方法的參數(shù)信息,要加入?yún)?shù)的屬性如:Username
2、事件驅(qū)動的異步(2.0新增)
調(diào)用方法:
protected void Page_Load(object sender, EventArgs e)
    {
        this.PreRenderComplete += new EventHandler(Page_PreRenderComplete);
        b.AsGetAccount("dinghao");
    
    }
    protected void Page_PreRenderComplete(object sender, EventArgs e)
    {
        //異步調(diào)用結(jié)束
        VB.Account a = b.Account;
        AccountIf ai = new AccountIf(a);
        ais[0] = ai;
        GridView1.DataSource = ais;
        GridView1.DataBind();
    }這種調(diào)用方式,用的是*Completed事件,在*Async完成時(shí)觸發(fā),這種調(diào)用方式可以
省去Account,Username屬性,用起來比較簡單

http://bluewater.VEVb.com/archive/2006/06/20/430758.html


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 晋城| 蒙自县| 宝兴县| 修水县| 巴林右旗| 常德市| 余干县| 盈江县| 罗定市| 常熟市| 宝山区| 唐河县| 鲁山县| 石棉县| 淳化县| 磐石市| 胶南市| 塘沽区| 葫芦岛市| 蓬莱市| 陇南市| 彰化市| 嘉黎县| 泌阳县| 洛浦县| 察雅县| 济南市| 犍为县| 黄骅市| 隆安县| 靖远县| 义马市| 湘潭县| 伊宁县| 庆阳市| 达日县| 绵竹市| 惠东县| 宜丰县| 布尔津县| 太和县|