Page.ExecuteRegisteredAsyncTasks Page.ExecuteRegisteredAsyncTasks Page.ExecuteRegisteredAsyncTasks Page.ExecuteRegisteredAsyncTasks Method

Definición

Inicia la ejecución de una tarea asincrónica.Starts the execution of an asynchronous task.

public:
 void ExecuteRegisteredAsyncTasks();
public void ExecuteRegisteredAsyncTasks ();
member this.ExecuteRegisteredAsyncTasks : unit -> unit
Public Sub ExecuteRegisteredAsyncTasks ()

Excepciones

Hay una excepción en la tarea asincrónica.There is an exception in the asynchronous task.

Ejemplos

En el ejemplo de código siguiente se muestra el AsyncTimeout uso de la ExecuteRegisteredAsyncTasks propiedad RegisterAsyncTask con los métodos y.The following code example demonstrates the use of the AsyncTimeout property with the ExecuteRegisteredAsyncTasks and RegisterAsyncTask methods. Tenga en cuenta el uso de los controladores de inicio, finalización y de tiempo de espera.Note the use of beginning, ending, and time-out handlers. En el ejemplo, se introduce un retraso artificial para mostrar la situación de una tarea asincrónica que supera el tiempo asignado para la tarea tal y como se especifica en AsyncTimeout la propiedad.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. En un escenario real, una tarea asincrónica podría usarse para realizar llamadas de base de datos o generar imágenes, por ejemplo, y el controlador de tiempo de espera proporciona una degradación correcta si la tarea no se realiza en un período de tiempo especificado.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"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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.
    Page.RegisterAsyncTask(asynctask);
      
    // Execute the register asynchronous task.
    Page.ExecuteRegisteredAsyncTasks();

    TaskMessage.InnerHtml = mytask.GetAsyncTaskProgress();

  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Asynchronous Task Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <span id="TaskMessage" runat="server">
      </span>
    </div>
    </form>
</body>
</html>
<%@ Page Language="VB" AsyncTimeout="2"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    
    ' Define the asynchronuous task.
    Dim mytask As New Samples.AspNet.VB.Controls.MyAsyncTask()
    Dim asynctask As New PageAsyncTask(AddressOf mytask.OnBegin, AddressOf mytask.OnEnd, AddressOf mytask.OnTimeout, DBNull.Value)

    ' Register the asynchronous task.
    Page.RegisterAsyncTask(asynctask)
      
    ' Execute the register asynchronous task.
    Page.ExecuteRegisteredAsyncTasks()

    TaskMessage.InnerHtml = mytask.GetAsyncTaskProgress()
    
  End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Asynchronous Task Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <span id="TaskMessage" runat="server">
      </span>
    </div>
    </form>
</body>
</html>
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.
			Thread.Sleep(TimeSpan.FromSeconds(5.0));
		}

		// 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.";
			_dlgt.EndInvoke(ar);
		}

		// 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.";
		}
	}
}
Imports System.Web
Imports System.Web.UI
Imports System.Threading

Namespace Samples.AspNet.VB.Controls

    Public Class MyAsyncTask

        Private _taskprogress As String
        Private _dlgt As AsyncTaskDelegate

        ' Create delegate.
        Delegate Function AsyncTaskDelegate()

        Public Function GetAsyncTaskProgress() As String
            Return _taskprogress
        End Function

        Public Function DoTheAsyncTask()

            ' Introduce an artificial delay to simulate a delayed 
            ' asynchronous task. Make this greater than the 
            ' AsyncTimeout property.
            Thread.Sleep(TimeSpan.FromSeconds(5.0))

        End Function


        ' Define the method that will get called to
        ' start the asynchronous task.
        Public Function OnBegin(ByVal sender As Object, ByVal e As EventArgs, ByVal cb As AsyncCallback, ByVal extraData As Object) As IAsyncResult

            _taskprogress = "Beginning async task."

            Dim _dlgt As New AsyncTaskDelegate(AddressOf DoTheAsyncTask)
            Dim result As IAsyncResult = _dlgt.BeginInvoke(cb, extraData)
            Return result

        End Function 'OnBegin

        ' Define the method that will get called when
        ' the asynchronous task is ended.
        Public Sub OnEnd(ByVal ar As IAsyncResult)

            _taskprogress = "Asynchronous task completed."
            _dlgt.EndInvoke(ar)

        End Sub

        ' Define the method that will get called if the task
        ' is not completed within the asynchronous timeout interval.
        Public Sub OnTimeout(ByVal ar As IAsyncResult)

            _taskprogress = "Ansynchronous task failed to complete because " & _
            "it exceeded the AsyncTimeout parameter."

        End Sub

    End Class

End Namespace

Comentarios

Defina una tarea asincrónica mediante la PageAsyncTask clase.Define an asynchronous task using the PageAsyncTask class. Una vez definida la tarea y registrada en la página mediante el RegisterAsyncTask método, se puede invocar el ExecuteRegisteredAsyncTasks método para iniciar la tarea asincrónica.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.

Se ExecuteRegisteredAsyncTasks llama al método automáticamente en el punto del procesamiento de la página cuando cualquier tarea asincrónica registrada, si existe, se invoca para una página no asincrónica.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. Esta llamada ExecuteRegisteredAsyncTasks automática se produce justo antes del PreRenderComplete evento.This automatic call to ExecuteRegisteredAsyncTasks occurs just before the PreRenderComplete event. Llame al ExecuteRegisteredAsyncTasks método para las tareas que desea invocar en momentos distintos de la llamada automática a este método.Call the ExecuteRegisteredAsyncTasks method for tasks you want to be invoked at times other than the automatic call to this method. Tenga en cuenta que las tareas asincrónicas se ejecutarán una ExecuteRegisteredAsyncTasks sola vez, aunque se puede llamar más de una vez.Note, asynchronous tasks will be executed only once even though ExecuteRegisteredAsyncTasks may be called more than once.

La AsyncTimeout propiedad se restablece en cada llamada ExecuteRegisteredAsyncTasks al método.The AsyncTimeout property is reset on every call to the ExecuteRegisteredAsyncTasks method. El último valor de AsyncTimeout antes de invocar el ExecuteRegisteredAsyncTasks método tiene prioridad.The last value of the AsyncTimeout prior to invoking the ExecuteRegisteredAsyncTasks method takes precedence. Si una tarea asincrónica tarda más que AsyncTimeout, las tareas subsiguientes invocadas durante esa ExecuteRegisteredAsyncTasks llamada se agotan inmediatamente.If an asynchronous task takes more than the AsyncTimeout, subsequent tasks invoked during that ExecuteRegisteredAsyncTasks call are timed out immediately.

Se aplica a

Consulte también: