none
基类中如何调用异步方法? RRS feed

  • 问题

  • 目的是所有的页面在进入时都执行一个数据库相关的方法。做法是所有的页面都继承自一个基类,在基类中调用这个方法。但现在速度有些慢,想把这个方法变成异步的,请问是否能达到方法正在调用的同时已经将HTML返回到客户端(方法与要返回的HTML无关)?如果能达到提高速度的话应该如何写?谢谢了。

    以下是我的代码:

            protected override void OnInit(EventArgs e)

              {

                this.AsyncMode = true;
                base.OnInit(e);
            }
            protected override void OnLoad(EventArgs e)
            {
                if (!Page.IsPostBack)
                {
                    if (UrlInfoList==null)
                    {
                        UrlInfoList = GetAllUrlInfo();
                    }

    AddOnPreRenderCompleteAsync(BeginCall, EndCall);  

                }
                base.OnLoad(e);
            }

    private IAsyncResult BeginCall(object sender, EventArgs e, AsyncCallback cb, object extraData)  
    {
    WriteLog();
    return null;
    }  

    private void EndCall(IAsyncResult ar)  
    {  

    但运行时报错:

    This operation requires the page to be asynchronous (the Async attribute must be set to true).

    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

    Exception Details: System.InvalidOperationException: This operation requires the page to be asynchronous (the Async attribute must be set to true).

    2013年10月15日 7:44

答案

全部回复