PageAsyncTask类

异步任务处理类:PageAsyncTask

PageAsyncTask类包含对注册到页面的异步任务的管理,能够通过编程的方式在页面呈现前执行多个任务,还可以指定这些任务的运行模式是并行还是串行。任务的运行期在页面的PreRender事件和PreRenderComplete事件之间。

PageAsyncTask类的方法多是类的通用方法。其只提供了异步任务的一些属性,如任务对象的状态和异步对象的运行模式等。我们可以通过这些属性,设计异步任务处理功能。

语法定义:

public sealed class PageAsyncTask

PageAsyncTask类_第1张图片

属性详解:

PageAsyncTask类的属性用来指定运行的一些方法。

BeginHandler:    获取当异步任务开始时要调用的方法。    返回结果:System.Web.BeginEventHandler 委托,表示当异步任务开始时要调用的方法。

 EndHandler : 获取当任务在超时期内成功完成时要调用的方法。返回结果: System.Web.EndEventHandler 委托,表示当任务在超时期内成功完成时要调用的方法。

ExecuteInParallel: 获取一个值,该值指示任务能否与其他任务并行处理。 返回结果: 如果任务应当与其他任务并行处理,则为 true;否则为 false。

State:获取表示任务状态的对象。 返回结果:   System.Object,表示任务状态。

TimeoutHandler:获取当任务未在超时期内成功完成时要调用的方法。返回结果:   System.Web.EndEventHandler 委托,表示当任务未在超时期内成功完成时要调用的方法。

 

典型应用:使用PageAysncTask异步执行任务

学习如何实现页面异步任务。虽然任务很简单,只是输出一行语句,但对于如何调用异步任务的步骤却讲述得很清晰

1、新建一个网站,命名为“PageAsyncTaskSample”.

2、打开Default.aspx页面,在指令“@Page”中设置运行异步执行得属性,同时设置异步超时的时间为10秒,具体代码如下:

<%@ Page Language="C#" AutoEventWireup="true" Async="true"AsyncTimeout=10  CodeFile="Default.aspx.cs" Inherits="_Default" %>

 

3、在Page_Load事件中,注册一个新任务,代码如下。可以看到在执行任务的前后都显示语句,可通过次判断任务的执行方式。

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write("没有任务前");
        PageAsyncTask task = new PageAsyncTask(new BeginEventHandler(BeginAsync), new EndEventHandler(EndAsync),
  new EndEventHandler(TimeoutAsync), null);//定义异步任务
        RegisterAsyncTask(task);//注册异步任务
        Response.Write("执行任务后");
        
    }

4、任务中涉及的委托和事件的代码如下:

  protected delegate void AsyncTaskDelegate();
    IAsyncResult BeginAsync(object sender, EventArgs e, AsyncCallback asyncCall, object state)
    { 
        //获取用户的特色设置,假设已经获取完毕
        AsyncTaskDelegate _dlgt = new AsyncTaskDelegate(getProfile);
        IAsyncResult result = _dlgt.BeginInvoke(asyncCall, state);
        return result;
    }
    void EndAsync(IAsyncResult result)
    {
        Response.Write("您的特色设置任务已经完成");
    }
    void TimeoutAsync(IAsyncResult result)
    {
        Response.Write("Sorry,任务处理超时");
    }
    private void getProfile()
    {
        Response.Write ("特色设置已近获取完毕");  //考虑到篇幅问题,此处直接返回值
    }


5、运行程序,测试异步任务程序的执行情况和语句显示的顺序。
 

你可能感兴趣的:(PageAsyncTask类)