Page.ExecuteRegisteredAsyncTasks Method

Starts the execution of an asynchronous task.

Namespace: System.Web.UI
Assembly: System.Web (in system.web.dll)

public void ExecuteRegisteredAsyncTasks ()
public void ExecuteRegisteredAsyncTasks ()
public function ExecuteRegisteredAsyncTasks ()
Not applicable.

Exception typeCondition


There is an exception in the asynchronous task.

Define an asynchronous task using the PageAsyncTask class. After the task is defined, and is registered with the page using the RegisterAsyncTask method, the ExecuteRegisteredAsyncTasks method can be invoked to begin the asynchronous task.

The ExecuteRegisteredAsyncTasks method is automatically called at the point in the page processing when any registered asynchronous tasks, if they exist, are invoked for a non-asynchronous page. This automatic call to ExecuteRegisteredAsyncTasks occurs just before the PreRenderComplete event. Call the ExecuteRegisteredAsyncTasks method for tasks you want to be invoked at times other than the automatic call to this method. Note, asynchronous tasks will be executed only once even though ExecuteRegisteredAsyncTasks may be called more than once.

The AsyncTimeout property is reset on every call to the ExecuteRegisteredAsyncTasks method. The last value of the AsyncTimeout prior to invoking the ExecuteRegisteredAsyncTasks method takes precedence. If an asynchronous task takes more than the AsyncTimeout, subsequent tasks invoked during that ExecuteRegisteredAsyncTasks call are timed out immediately.

The following code example demonstrates the use of the AsyncTimeout property with the ExecuteRegisteredAsyncTasks and RegisterAsyncTask methods. Note the use of beginning, ending, and time-out handlers. In the example, an artificial delay is introduced to demonstrate the situation of an asynchronous task exceeding the allotted time for the task as specified in the AsyncTimeout property. In a real-world scenario, an asynchronous task could be used to perform database calls or image generation, for example, and the time-out handler provides graceful degradation if the task is not performed in a specified amount of time.

<%@ Page Language="C#" AsyncTimeout="2"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<script runat="server">

  protected void Page_Load(object sender, EventArgs e)
    // Define the asynchronuous task.
    Samples.AspNet.CS.Controls.MyAsyncTask mytask =    
      new Samples.AspNet.CS.Controls.MyAsyncTask();
    PageAsyncTask asynctask = new PageAsyncTask(mytask.OnBegin, mytask.OnEnd, mytask.OnTimeout, null);

    // Register the asynchronous task.
    // Execute the register asynchronous task.

    TaskMessage.InnerHtml = mytask.GetAsyncTaskProgress();


<html xmlns="" >
<head runat="server">
    <title>Asynchronous Task Example</title>
    <form id="form1" runat="server">
      <span id="TaskMessage" runat="server">

using System;
using System.Web;
using System.Web.UI;
using System.Threading;

namespace Samples.AspNet.CS.Controls
	public class MyAsyncTask
		private String _taskprogress;
		private AsyncTaskDelegate _dlgt;

		// Create delegate.
		protected delegate void AsyncTaskDelegate();

		public String GetAsyncTaskProgress()
			return _taskprogress;
		public void DoTheAsyncTask()
			// Introduce an artificial delay to simulate a delayed 
			// asynchronous task. Make this greater than the 
			// AsyncTimeout property.

		// Define the method that will get called to
		// start the asynchronous task.
		public IAsyncResult OnBegin(object sender, EventArgs e,
			AsyncCallback cb, object extraData)
			_taskprogress = "Beginning async task.";

			_dlgt = new AsyncTaskDelegate(DoTheAsyncTask);
			IAsyncResult result = _dlgt.BeginInvoke(cb, extraData);

                        return result;

		// Define the method that will get called when
		// the asynchronous task is ended.
		public void OnEnd(IAsyncResult ar)
			_taskprogress = "Asynchronous task completed.";

		// Define the method that will get called if the task
		// is not completed within the asynchronous timeout interval.
		public void OnTimeout(IAsyncResult ar)
			_taskprogress = "Ansynchronous task failed to complete " +
				"because it exceeded the AsyncTimeout parameter.";

Windows 98, Windows Server 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0