异步任务处理类:PageAsyncTask

来源:互联网 发布:假授权书能通过淘宝吗 编辑:程序博客网 时间:2024/06/05 10:59

http://www.xuebuyuan.com/580011.html

异步任务处理类:PageAsyncTask

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

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

语法定义:

public sealed class PageAsyncTask

属性详解:

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、运行程序,测试异步任务程序的执行情况和语句显示的顺序。

0 0
原创粉丝点击