亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ASP.NET 2.0的異步頁面刷新

2019-11-18 17:04:19
字體:
來源:轉載
供稿:網友

asp.net 2.0的異步頁面刷新功能真得很酷,今天嘗試用它解決我的一個應用問題,真是幫了大忙了。

我的頁面要向后臺的socket服務提交一個查詢,首先這是一個可能長時間不返回的操作;其次為了拿到socket服務返回的長度不定、有可能很大的Response數據,我不得不采用了dotNET的IAsyncResult BeginReceive(byte[] buffer, int offset, int size, SocketFlags socketFlags, AsyncCallback callback, object state);辦法來異步提交socket命令,然后在回調函數中迭代調用int EndReceive(IAsyncResult asyncResult);來獲取Response數據直到數據被取完,這一系列的數據片斷都緩存在一個MemoryBlock鏈表中。

這種情況下,ASP.NET頁面要想用表格展示Response數據,必須能夠被異步刷新。

ASP.NET 1.x 本質上不支持異步頁,但是通過堅韌的努力和不懈地創新可以生成異步頁。有關更多概述信息,請參閱 MSDN®Magazine 2003 年 6 月刊的文章“Use Threads and Build Asynchronous Handlers in Your Server-Side Web Code”,該文章的作者是 Fritz Onion。

但ASP.NET 2.0 極大地簡化了生成異步頁的方式。首先使用該頁的 @ Page 指令引入 Async=“true” 屬性。

其次,在 Page_Load 時,注冊事件Page_PReRender:

        private void Page_Load(object sender, System.EventArgs e)

        {

            if (!IsPostBack)

            {

                // 注冊事件Page_PreRender執行完成時執行方法

                // Hook PreRenderComplete event for data binding

                this.PreRenderComplete += new EventHandler(Page_PreRenderComplete);

 

接下來,我在點擊按鈕的事件函數中,開始我的異步操作之旅:

/// PageAsyncTask 的方式則是增強版本,除了異步頁面處理開始和結束方法自身外,

/// 還可以提供在超時情況下的處理方法,以及處理時的狀態對象。

///

PageAsyncTask task = new PageAsyncTask(

    new BeginEventHandler(BeginSubmitKeyWordsAsyncOperation),

    new EndEventHandler(EndSubmitKeywordsAsyncOperation),

    new EndEventHandler(TimeoutSubmitKeywordsAsyncOperation),

    null

);

RegisterAsyncTask(task);

 

/// 對大多數簡單的異步處理情況,可以直接調用AddOnPreRenderCompleteAsync 方法,

/// 提交頁面請求開始和結束時的處理代碼

//AddOnPreRenderCompleteAsync(

//    new BeginEventHandler(BeginSubmitKeywordsAsyncOperation),

//    new EndEventHandler(EndSubmitKeywordsAsyncOperation)

//);

 

該頁經歷其常規處理生命周期,直到 PreRender 事件剛剛引發之后。然后,ASP.NET 調用使用 RegisterAsyncTask注冊的 Begin 方法BeginSubmitKeywordsAsyncOperation。這個方法中我將向sokcet服務提交我的命令,然后將socket.BeginReceive方法得到的IasyncResult對象返回給ASP.NET。

         然后,我的socket異步回調函數在最終全部獲得數據流后,通過調用

         callback.Invoke(result);

         來通知頁面socket這邊已經完成工作了。

         于是ASP.NET喚起EndSubmitKeywordsAsyncOperation方法:

        /// <summary>

        /// 異步調用結束后的接收方法(異步操作執行完成后,會重新從線程池中取個線程為本頁面請求服務).

        /// </summary>

        /// <param name="ar"></param>

        void EndSubmitKeywordsAsyncOperation(IAsyncResult ar)

        {

            _resultDataset = _submit.getResultDataset(ar);

         在這個函數中,我就可以拿到數據流了。

         之后,ASP.NET又喚起Page_PreRender事件,從而可以在這個事件中,把頁面上的表格正確填充了。

         這樣,就達到了我的目的。而且向后臺提交后等待被再度激活超時了,也可以由

         void TimeoutSubmitKeywordsAsyncOperation(IAsyncResult ar)

     來做合適的處理。

 

參考資源:

1:

ASP.NET 2.0 中的異步頁

http://www.microsoft.com/china/msdn/library/webservices/asp.net/issuesWickedCodetoc.mspx?mfr=true

http://www.49028c.com/zhengyun_ustc/archive/2006/08/08/asp_net_2_0_pageasynctask.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧美最新羞羞视频在线观看| 国产精品嫩草影院一区二区| www.精品av.com| 久久97精品久久久久久久不卡| 日韩精品日韩在线观看| 亚洲最大的网站| 青青久久aⅴ北条麻妃| 亚洲国产美女久久久久| 亚洲国产日韩欧美在线图片| 亚洲午夜精品久久久久久久久久久久| 色偷偷综合社区| 亚洲成年人影院在线| 国产精品久久久精品| 97碰碰碰免费色视频| 亚洲欧美一区二区三区久久| 欧美成人精品xxx| 一区二区三区无码高清视频| 欧美大尺度电影在线观看| 日韩欧美中文字幕在线观看| 久久久视频免费观看| 成人精品一区二区三区电影黑人| 久久手机精品视频| 亚洲精品成人免费| 欧美激情综合色综合啪啪五月| 成人国产精品av| 日本成人激情视频| 国产午夜精品美女视频明星a级| 日韩av片免费在线观看| 日日摸夜夜添一区| 欧美视频免费在线| 亚洲美女久久久| 国产亚洲精品91在线| 欧美—级a级欧美特级ar全黄| 精品一区二区三区四区在线| 日韩有码在线观看| 亚洲天堂男人的天堂| 91免费国产网站| 另类色图亚洲色图| 热99精品里视频精品| 久久在线观看视频| 久久精品美女视频网站| 性夜试看影院91社区| 色多多国产成人永久免费网站| 亚洲美腿欧美激情另类| 在线亚洲午夜片av大片| 日韩精品中文字幕久久臀| 精品国产美女在线| 国产精品久久久久久五月尺| 欧美国产欧美亚洲国产日韩mv天天看完整| 午夜精品福利在线观看| 亚洲日韩欧美视频| 懂色av影视一区二区三区| 91九色国产社区在线观看| 欧美激情国产精品| 国产日韩在线观看av| 欧美在线视频网站| 欧美黄网免费在线观看| 国产午夜精品美女视频明星a级| 日本欧美在线视频| 亚洲精品动漫100p| 国产精品成人免费电影| 中文字幕日韩欧美| 大胆欧美人体视频| 亚洲天堂影视av| 人人澡人人澡人人看欧美| 亚洲综合av影视| 欧美日韩在线第一页| 亚洲永久在线观看| 亚洲欧洲午夜一线一品| 国产欧美久久久久久| 欧美国产高跟鞋裸体秀xxxhd| 中文字幕久久久av一区| 欧美成人精品一区| 亚洲一区二区久久| 欧美噜噜久久久xxx| 日韩电影中文字幕一区| 97精品一区二区三区| 亚洲成人网久久久| 欧美视频一区二区三区…| 亚洲a在线观看| 蜜月aⅴ免费一区二区三区| 久久久精品美女| 91中文在线视频| 97精品一区二区视频在线观看| 欧洲成人免费aa| 成人亲热视频网站| 日韩在线www| 精品久久久久国产| 精品国产鲁一鲁一区二区张丽| 国产精品视频久久久久| 国产亚洲欧美日韩美女| 中文欧美日本在线资源| 国产成人精品免高潮费视频| 91在线视频免费| 亚洲社区在线观看| 欧美丝袜美女中出在线| 亚洲精品福利视频| 久久久精品国产网站| 欧美日韩午夜剧场| 欧美视频在线观看免费网址| 亚洲人成网站色ww在线| 色狠狠久久aa北条麻妃| 欧美日韩激情视频8区| 国产精品亚洲精品| 国产精品视频xxxx| 日本欧美国产在线| 成人有码视频在线播放| 久久99久久99精品免观看粉嫩| 久久久精品视频在线观看| 91久久综合亚洲鲁鲁五月天| 成年人精品视频| 日韩av免费在线| 成人免费观看49www在线观看| 在线观看日韩www视频免费| 日本精品性网站在线观看| 97超碰蝌蚪网人人做人人爽| 成人激情视频免费在线| 色妞欧美日韩在线| 欧美精品videosex性欧美| 亚洲国模精品私拍| 一区二区三区 在线观看视| 成人天堂噜噜噜| 91国产视频在线| 欧美午夜无遮挡| 日韩欧美在线观看| 日韩欧美第一页| 尤物精品国产第一福利三区| 国产精品免费在线免费| 日韩av在线免费观看一区| 亚洲人a成www在线影院| 亚洲黄色在线观看| 久久久久国产视频| 亚洲欧洲在线看| 亚洲天堂成人在线| 2019国产精品自在线拍国产不卡| 亚洲精品永久免费精品| 91日韩在线播放| 久久精品国产清自在天天线| 国产精品小说在线| 久久久国产一区二区| 亚洲精品中文字幕有码专区| 欧美日韩一区免费| 欧美一级免费看| 国产精品激情av在线播放| 欧美激情欧美狂野欧美精品| 欧美精品久久久久久久| 日韩成人在线视频| 亚洲欧美三级伦理| www.日韩av.com| 国产精品v日韩精品| 97香蕉超级碰碰久久免费的优势| 亚洲精品久久久久久久久| 久久香蕉精品香蕉| 亚洲国产精品成人精品| 成人精品一区二区三区电影黑人| 亚洲乱码国产乱码精品精| 国产人妖伪娘一区91| 中文字幕日韩综合av| 日韩精品免费在线观看| 91在线视频免费| 国产精品亚发布| 亚洲国产精品悠悠久久琪琪| 精品久久久视频| 亚洲在线免费观看|