zoukankan      html  css  js  c++  java
  • asp.net 3.5异步调用方法小结

    web请求
    RssAsync.aspx

        //这是调用本网站的两个页面,也可以设置成外部网站页面
        const string rssFeed1 = "http://localhost:2289/AsnicTest/WebRequest1.aspx";
        
    const string rssFeed2 = "http://localhost:2289/AsnicTest/WebRequest2.aspx";

        AsyncReader rss1, rss2;

        
    protected void Page_Load(object sender, EventArgs e)
        {
            PreRenderComplete 
    += new EventHandler(RssAsync_PreRenderComplete);

            rss1 
    = new AsyncReader(rssFeed1);
            rss2 
    = new AsyncReader(rssFeed2);

            PageAsyncTask task1 
    = new PageAsyncTask(new BeginEventHandler(rss1.BeginRead), new EndEventHandler(rss1.EndRead), nullnulltrue);
            PageAsyncTask task2 
    = new PageAsyncTask(new BeginEventHandler(rss2.BeginRead), new EndEventHandler(rss2.EndRead), nullnulltrue);

            RegisterAsyncTask(task1);
            RegisterAsyncTask(task2);
        }

        
    void RssAsync_PreRenderComplete(object sender, EventArgs e)
        {
            Literal1.Text 
    = rss1.GetData();
            Literal1.Text 
    += rss2.GetData();
        }
    AsyncReader是封装的一个类,代码如下:
    Code

    WebService异步调用
    1.asp.net 2.0开始,提供简单的方法实现异步调用
    AsyncWebService.aspx.cs

        protected void Page_Load(object sender, EventArgs e)
        {
            
    this.getHello();
        }

        
    private void getHello()
        {
            webServerAsync.WebService1 hello 
    = new webServerAsync.WebService1();

            
    ///同步调用WebService方法
            //Literal1.Text = hello.HelloAsync("张三", 30);

            
    //异步调用WebService方法
            hello.HelloWorldCompleted += new webServerAsync.HelloWorldCompletedEventHandler(hello_HelloWorldCompleted);
            hello.HelloWorldAsync(
    "张三"20);
        }

        
    void hello_HelloWorldCompleted(object sender, webServerAsync.HelloWorldCompletedEventArgs e)
        {
            Literal1.Text 
    = e.Result;
        }


    为了调用方便,以及代码重用,我也封装了一个类
    AsyncWebService.aspx.cs

        helloRader hello1, hello2;
        
    public string helloData;

        
    protected void Page_Load(object sender, EventArgs e)
        {
            
    if (!IsPostBack)
                dataBind();
        }

        
    private void dataBind()
        {
            PreRenderComplete 
    += new EventHandler(RssAsync_PreRenderComplete);

            hello1 
    = new helloRader("张三"20);
            hello2 
    = new helloRader("李四"22);

            PageAsyncTask task1 
    = AsyncTask(hello1);
            PageAsyncTask task2 
    = AsyncTask(hello2);

            RegisterAsyncTask(task1);
            RegisterAsyncTask(task2);
        }

        
    private PageAsyncTask AsyncTask(helloRader hello)
        {
            
    return new PageAsyncTask(new BeginEventHandler(hello.BeginRead), new EndEventHandler(hello.EndRead), nullnulltrue);
        }

        
    void RssAsync_PreRenderComplete(object sender, EventArgs e)
        {
            Literal1.Text 
    = hello1.GetData() + "</br>";
            Literal1.Text 
    += hello2.GetData();
        }

    helloRader.cs
    Code
    源码下载
  • 相关阅读:
    《区块链100问》第56集:权益证明机制是什么?
    《区块链100问》第57集:股份授权证明机制是什么?
    《区块链100问》第58集:零知识证明是什么?
    《区块链100问》第59集:哈希算法是什么?
    《区块链100问》第60集:非对称加密算法是什么?
    《区块链100问》第61集:扩容是什么?
    《区块链100问》第62集:比特币为什么要扩容?
    《区块链100问》第63集:隔离见证是什么?
    使用Nginx后如何在web应用中获取用户ip及原理解释
    MySQL的进程状态
  • 原文地址:https://www.cnblogs.com/timy/p/1395534.html
Copyright © 2011-2022 走看看