yuxz2k

导航

Asyn Task in Asp.net 2.0

async page 是Asp.net 2.0中的新特征。
public partial class SlowMultiAsync : Page
{
  Slow slowWebservice 
= new Slow();
  
protected void Page_Load(object sender, EventArgs e)
  
{
    PageAsyncTask task1 
=
      
new PageAsyncTask(
      
new BeginEventHandler(BeginGetAsyncData),
      
new EndEventHandler(EndGetAsyncData),
      
new EndEventHandler(TimeoutGetAsyncData),
      
"task1"//this is supplemental state (an object parameter) in which you can pass anything
      true); //this is whether you want to run in parallel or serially
    PageAsyncTask task2 =
      
new PageAsyncTask(
      
new BeginEventHandler(BeginGetAsyncData),
      
new EndEventHandler(EndGetAsyncData),
      
new EndEventHandler(TimeoutGetAsyncData),
      
"task2",
      
true);
    PageAsyncTask task3 
=
      
new PageAsyncTask(
      
new BeginEventHandler(BeginGetAsyncData),
      
new EndEventHandler(EndGetAsyncData),
      
new EndEventHandler(TimeoutGetAsyncData),
      
"task3",
      
true);
    RegisterAsyncTask(task1);
    RegisterAsyncTask(task2);
    RegisterAsyncTask(task3);
  }

 
  IAsyncResult BeginGetAsyncData(Object src, EventArgs args,
                                                           AsyncCallback cb, Object state)
  
{
    
return slowWebservice.BeginHelloWorld(cb, state);
  }

 
  
void TimeoutGetAsyncData(IAsyncResult ar)
  
{
    Response.Write(
"<strong>async get data timed out</strong><br />");
  }

 
  
void EndGetAsyncData(IAsyncResult ar)
  
{
    
string ret = slowWebservice.EndHelloWorld(ar);
    
// use result to prepare response here
  }

  
//
}

posted on 2005-03-19 20:38  山人  阅读(237)  评论(0编辑  收藏  举报