ASP.NET非同步網頁

Posted by on | |
在asp.net web page非同步的寫法有二種,我常用的這一種,覺得比較彈性。
有幾個重點步驟,如下:
  1. 建立一個真的要執行任務的function - ex. myAction
  2. 建立一個AsyncTaskDelegate物件 - ex. ATDObj
  3. 建立3個非同步必要的function - onBegin,onEnd,onTimeout
  4. 在web page註冊非同步的任務 - ex. myReg


所以執行順序為:myReg -> onBegin -> ATDObj -> myAction

底下的範本Code:
public class DATA
{
public string a;
public string b;
}

private void myAction(DATA  inDATA)
{
//do something
}

private  delegate void AsyncTaskDelegate(DATA  inDATA);

public IAsyncResult onBegin(object sender, EventArgs e, AsyncCallback cb, object state)
{
        AsyncTaskDelegate _dlgt = new AsyncTaskDelegate(myAction);
        return _dlgt.BeginInvoke((DATA)state, cb, state);
}

public void onEnd(IAsyncResult ar)
{}

public void onTimeout(IAsyncResult ar)
{}

private void Asnyc_NotifyGuest(string inGuestID)
{
DATA tmpData = new DATA();
        tmpData .a= "xxxx";
        tmpData .b= "yyyy";

        this.Page.RegisterAsyncTask(new PageAsyncTask(this.onBegin,
           this.onEnd,
           this.onTimeout,
           tmpData ,
           true
       ));
}

0 意見: