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

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

在asp.net頁面中使用異步讀取

2019-11-18 16:58:47
字體:
來源:轉載
供稿:網友

剛親自撰寫一篇技術文章,請大家多指教。哈哈。
原文首發:http://bbs.5inet.net/topic.aspx?topicid=181

有的時候我們需要在網頁里讀取論壇的信息,在傳統ASP的時候我們使用的是JS或者是IFRAME,這兩種方式都不是很方便,而且對搜索引擎不友好?,F在有了.Net,我們有了另一種方式。

要求:論壇需要提供rss支持。

代碼如下:


    #region task class
    //這是一個任務類,執行具體的任務
    public class RssAsyncTask
    {
        PRivate String _rssContent;
        private AsyncTaskDelegate _dlgt;
        private string rssUrl;
        private bool _success;

        public bool IsSuccess
        {
            get
            {
                return _success;
            }
        }

        public RssAsyncTask(string rssUrl)
        {
            this.rssUrl = rssUrl;
        }

        // Create delegate.
        protected delegate void AsyncTaskDelegate();

        public String GetRssContent()
        {
            return _rssContent;
        }
        public void DoTheAsyncTask()
        {
            // Introduce an artificial delay to simulate a delayed
            // asynchronous task. Make this greater than the
            // AsyncTimeout property.
            WebClient wc = new WebClient();
            try
            {
                _rssContent = wc.DownloadString(rssUrl);
                _success = true;
            }
            catch (Exception e)
            {
                _rssContent = e.Message;
            }
            finally
            {
                wc.Dispose();
            }
            //Thread.Sleep(TimeSpan.FromSeconds(5.0));
        }

        // Define the method that will get called to
        // start the asynchronous task.
        public IAsyncResult OnBegin(object sender, EventArgs e,
            AsyncCallback cb, object extraData)
        {
            //_rssContent = "Beginning async task.";

            _dlgt = new AsyncTaskDelegate(DoTheAsyncTask);
            IAsyncResult result = _dlgt.BeginInvoke(cb, extraData);

            return result;
        }

        // Define the method that will get called when
        // the asynchronous task is ended.
        public void OnEnd(IAsyncResult ar)
        {
            //_rssContent = "Asynchronous task completed.";
            _dlgt.EndInvoke(ar);
        }

        // Define the method that will get called if the task
        // is not completed within the asynchronous timeout interval.
        public void OnTimeout(IAsyncResult ar)
        {
            _rssContent = "Ansynchronous task failed to complete " +
                "because it exceeded the AsyncTimeout parameter.";
        }
    }
    #endregion

    //一個自定義的控件,繼承自另一個自定義控件。
    public class RArticle
        : LPanel
    {
        #region properties
        string rssUrl;

        public string RssUrl
        {
            get { return rssUrl; }
            set { rssUrl = value; }
        }

        int maxRecordNumber = 6;

        public int MaxRecordNumber
        {
            get { return maxRecordNumber; }
            set { maxRecordNumber = value; }
        }
        #endregion

        RssAsyncTask task;
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            task = new RssAsyncTask(this.rssUrl);
            PageAsyncTask asyncTask = new PageAsyncTask(task.OnBegin, task.OnEnd, task.OnTimeout, null);

            Page.RegisterAsyncTask(asyncTask);
            Page.ExecuteRegisteredAsyncTasks();
        }

        static Random r = new Random();
        protected override void Render(System.Web.UI.HtmlTextWriter writer)
        {
            string rssContent = task.GetRssContent();
            xmlDocument doc = null;
            if (task.IsSuccess)
            {
                doc = new XmlDocument();
                doc.LoadXml(rssContent);

                this.Title = doc.SelectSingleNode("rss/channel/title").InnerText;
                this.TitleNavigateUrl = doc.SelectSingleNode("rss/channel/link").InnerText;
                this.ShowTitle = true;
            }
            base.RenderBegin(writer);

            writer.WriteBeginTag("div");
            writer.WriteAttribute("class", "child2");
            Right(writer);
            writer.WriteBeginTag("ul");
            Right(writer);

            if (doc != null)
            {
                #region success

                XmlNodeList items = doc.SelectNodes("rss/channel/item");
                List<XmlNode> nodes = new List<XmlNode>();
                foreach (XmlNode node in items)
                    nodes.Add(node);

                //使用范型進行日期的倒序排列
                nodes.Sort(new Comparison<XmlNode>(delegate(XmlNode n1, XmlNode n2)
                {
                    DateTime d1 = DateTime.Parse(n1.SelectSingleNode("pubDate").InnerText);
                    DateTime d2 = DateTime.Parse(n2.SelectSingleNode("pubDate").InnerText);
                    TimeSpan ts = d2 - d1;
                    return (int)ts.TotalSeconds;
                }));

                for (int i = 0; i < maxRecordNumber; i++)
                {
                    XmlNode node = nodes[i];
                    writer.WriteBeginTag("li");
                    Right(writer);
                    writer.WriteBeginTag("a");
                    writer.WriteAttribute("target", "_blank");
                    writer.WriteAttribute("href", node.SelectSingleNode("link").InnerText);
                    Right(writer);
                    writer.Write(node.SelectSingleNode("title").InnerText);
                    writer.WriteEndTag("a");
                    writer.WriteEndTag("li");
                }

                #endregion
            }
            else
            {
                writer.WriteBeginTag("pre");
                Right(writer);
                writer.Write(task.GetRssContent());
                writer.WriteEndTag("pre");
            }

            writer.WriteEndTag("ul");
            writer.WriteEndTag("div");

            RenderChildren(writer);

            base.RenderEnd(writer);
        }
    }
使用方法:
一、注冊控件


<%@ Register Assembly="Controls" Namespace="Limited.Controls" TagPrefix="lm" %>
二、調用


<lm:RArticle ID="RArticle1" runat="server" MaxRecordNumber="10" RssUrl="為了簡便起見,本程序就沒有使用緩存之類的技術了,如有必要,請自行添加。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品xxx| 亚洲福利视频网| 久久亚洲国产精品成人av秋霞| 精品国产成人av| 97在线视频免费播放| 久久久亚洲国产天美传媒修理工| 久久久精品欧美| 精品一区二区三区三区| 大伊人狠狠躁夜夜躁av一区| 中文字幕欧美亚洲| 日韩在线观看高清| 国产精品视频久| 欧美性色xo影院| 红桃视频成人在线观看| 国产一区二区三区在线视频| 精品国产鲁一鲁一区二区张丽| 国产精品精品一区二区三区午夜版| 亚洲图片欧美午夜| 午夜精品久久久久久99热| 国产视频福利一区| 国产午夜精品麻豆| 伊人亚洲福利一区二区三区| 亚洲国产又黄又爽女人高潮的| 日韩电影中文字幕| 茄子视频成人在线| 日韩精品在线视频美女| 久久99青青精品免费观看| 日本最新高清不卡中文字幕| 欧美性xxxx18| 亚洲人成电影在线| 精品成人乱色一区二区| 亚洲午夜性刺激影院| 91在线中文字幕| 久久久久久国产精品| 欧美精品久久久久久久免费观看| 国外视频精品毛片| 精品激情国产视频| 久久久伊人欧美| 成人黄色免费网站在线观看| 亚洲最大激情中文字幕| 亚洲国产中文字幕久久网| 97视频网站入口| 欧美裸体男粗大视频在线观看| 国产精品久在线观看| 日韩欧美在线第一页| 成人免费网站在线| 91精品国产777在线观看| 日本国产高清不卡| 在线精品国产欧美| 日韩精品极品毛片系列视频| 欧美日韩精品在线播放| 正在播放欧美视频| 高清一区二区三区日本久| 91国产在线精品| 欧美午夜视频在线观看| 欧美国产日韩二区| 国产剧情久久久久久| 日本最新高清不卡中文字幕| 性色av香蕉一区二区| 欧洲精品久久久| 日韩天堂在线视频| 成人黄色免费在线观看| 久久天天躁狠狠躁夜夜躁2014| 亚洲香蕉av在线一区二区三区| 日韩电视剧在线观看免费网站| 一区二区三区回区在观看免费视频| 日韩中文字幕精品视频| 日韩av色综合| 亚洲老司机av| 日韩欧美高清视频| 欧美在线激情视频| 国产精品h在线观看| 88国产精品欧美一区二区三区| 热99精品里视频精品| 亚洲欧美日本精品| 欧美丰满少妇xxxx| 一区二区欧美激情| 亚洲一级免费视频| 欧美xxxx综合视频| 亚洲欧美一区二区激情| 亚洲最大福利视频| 7m第一福利500精品视频| 中文字幕欧美精品日韩中文字幕| 色777狠狠综合秋免鲁丝| 国产精品99导航| 国产日韩欧美黄色| 欧美夜福利tv在线| 欧美丰满少妇xxxxx做受| 成人福利视频在线观看| 欧美国产日韩中文字幕在线| 亚洲大胆人体av| 欧洲一区二区视频| 成人网欧美在线视频| 福利视频导航一区| 国产日韩在线视频| 国产精品久久久久久久7电影| 国产精品第2页| 日韩最新中文字幕电影免费看| 亚洲偷熟乱区亚洲香蕉av| 精品日韩视频在线观看| 精品国产一区二区三区久久狼黑人| 成人网欧美在线视频| 性亚洲最疯狂xxxx高清| 欧美性极品xxxx娇小| 不用播放器成人网| 欧美日韩福利视频| 久久精品国产亚洲精品| 日韩成人性视频| 尤物yw午夜国产精品视频| 日韩有码在线电影| 亚洲老司机av| 亚洲人成网站色ww在线| 色妞色视频一区二区三区四区| 国产欧美日韩视频| 亚洲a成v人在线观看| 中文字幕欧美日韩在线| 91色精品视频在线| 亚洲精品久久久久久久久久久| 久久久爽爽爽美女图片| 日韩成人中文电影| 久久视频在线播放| 亚洲二区在线播放视频| 精品久久久久久中文字幕一区奶水| 亚洲三级黄色在线观看| 亚洲精品国产福利| 亚洲精品国产精品国自产观看浪潮| 亚洲天堂av网| 欧美性xxxxxxxxx| 亚洲国产精彩中文乱码av| 欧美日韩国产一区二区三区| 久久久人成影片一区二区三区| 亚洲欧美国产一区二区三区| 亚洲欧美www| 欧美激情日韩图片| 97精品国产aⅴ7777| 欧美另类xxx| 亚洲电影免费观看高清完整版| 国产午夜精品全部视频播放| 日韩在线视频线视频免费网站| 日韩在线中文视频| 亚洲综合精品伊人久久| 欧美午夜宅男影院在线观看| 亚洲大尺度美女在线| 亚洲视频999| 亚洲精选中文字幕| 亚洲国产成人久久综合| 91久久久亚洲精品| 国产精品黄视频| 国产精品wwww| 国产一区二区三区视频| 日韩国产在线播放| 欧美一级黑人aaaaaaa做受| 亚洲影视中文字幕| 91精品国产高清久久久久久| 日韩免费不卡av| 亚洲男人天堂2023| 久久精品99无色码中文字幕| 欧美成人精品激情在线观看| 成人黄色av免费在线观看| 欧美高清性猛交| 国产精品免费久久久久影院| 欧美精品在线免费播放| 亚洲精品乱码久久久久久按摩观| 久久99亚洲热视|