Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

PageAsyncTask classe

 

Date de publication : novembre 2016

Contient des informations sur une tâche asynchrone inscrite dans une page. Cette classe ne peut pas être héritée.

Espace de noms:   System.Web.UI
Assembly:  System.Web (dans System.Web.dll)

System.Object
  System.Web.UI.PageAsyncTask

public sealed class PageAsyncTask

NomDescription
System_CAPS_pubmethodPageAsyncTask(BeginEventHandler, EndEventHandler, EndEventHandler, Object)

Initialise une nouvelle instance de la PageAsyncTask classe à l’aide de la valeur par défaut pour l’exécution en parallèle.

System_CAPS_pubmethodPageAsyncTask(BeginEventHandler, EndEventHandler, EndEventHandler, Object, Boolean)

Initialise une nouvelle instance de la PageAsyncTask classe à l’aide de la valeur spécifiée pour une exécution en parallèle.

System_CAPS_pubmethodPageAsyncTask(Func<CancellationToken, Task>)

Initialise une nouvelle instance de la PageAsyncTask classe à l’aide d’un gestionnaire d’événements qui permet à la tâche doit être annulée.

System_CAPS_pubmethodPageAsyncTask(Func<Task>)

Initialise une nouvelle instance de la PageAsyncTask classe à l’aide d’un gestionnaire d’événements qui permet à la tâche à traiter.

NomDescription
System_CAPS_pubpropertyBeginHandler

Obtient la méthode à appeler lorsque début d’une tâche asynchrone.

System_CAPS_pubpropertyEndHandler

Obtient la méthode à appeler lorsque la tâche se termine correctement dans le délai imparti.

System_CAPS_pubpropertyExecuteInParallel

Obtient une valeur qui indique si la tâche peut être traitée en parallèle avec d’autres tâches.

System_CAPS_pubpropertyState

Obtient un objet qui représente l’état de la tâche.

System_CAPS_pubpropertyTimeoutHandler

Obtient la méthode à appeler lorsque la tâche ne se termine pas correctement dans le délai d’attente.

NomDescription
System_CAPS_pubmethodEquals(Object)

Détermine si l'objet spécifié est identique à l'objet actuel.(Hérité de Object.)

System_CAPS_pubmethodGetHashCode()

Fait office de fonction de hachage par défaut.(Hérité de Object.)

System_CAPS_pubmethodGetType()

Obtient le Type de l'instance actuelle.(Hérité de Object.)

System_CAPS_pubmethodToString()

Retourne une chaîne qui représente l'objet actuel.(Hérité de Object.)

Version d’ASP.NET 2.0 permet d’inscrire plusieurs tâches dans une page et de les exécuter de façon asynchrone avant le rendu de la page. Vous pouvez spécifier qu’une tâche être exécuter de façon asynchrone si c’est un processus lent et que vous ne souhaitez pas que les autres processus bloquer pendant son exécution. Les tâches asynchrones peuvent être exécutées en parallèle ou séquentiellement.

Un PageAsyncTask objet doit être inscrit dans la page via la RegisterAsyncTask méthode. La page elle-même ne devra pas être traitées de manière asynchrone pour exécuter des tâches asynchrones. Vous pouvez définir les Async l’attribut true (comme indiqué dans l’exemple de code suivant) ou false sur la page (directive) et les tâches asynchrones sont traitées de manière asynchrone :

<%@ Page Async="true" %>

Lorsque le Async attribut est défini sur false, le thread qui exécute la page sera bloqué jusqu'à ce que toutes les tâches asynchrones sont terminées.

Les tâches asynchrones inscrites avant le PreRenderComplete événements seront exécutées automatiquement par la page si elles n’ont pas déjà été exécutées. Les tâches asynchrones inscrites après le PreRenderComplete événement doit être exécuté explicitement par l’intermédiaire du ExecuteRegisteredAsyncTasks (méthode). Le ExecuteRegisteredAsyncTasks méthode peut également être utilisée pour démarrer les tâches avant le PreRenderComplete événement. Le ExecuteRegisteredAsyncTasks méthode s’exécute toutes les tâches asynchrones inscrites sur la page qui n’ont pas été exécutées.

Par défaut, une tâche asynchrone expire si elle n’est pas terminée dans les 45 secondes. Vous pouvez spécifier une valeur de délai d’attente différente dans le fichier Web.config de la directive de page. Le <pages> section du fichier Web.config contient un asyncTimeout d’attribut, comme illustré ci-dessous.

<system.web>

<pages asyncTimeout="30">

</pages>

</system.web>

La directive de page contienne un AsyncTimeout attribut.

<%@ Page AsyncTimeout="30" %>

L’exemple de code suivant inscrit trois tâches asynchrones dans une page et les exécute en parallèle. Chaque tâche appelle une méthode qui provoque seulement le thread en veille pendant 5 secondes.

<%@ Page Language="C#" Async="true" AsyncTimeout="35"%>

<!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.SlowTask slowTask1 =    
      new Samples.AspNet.CS.Controls.SlowTask();
    Samples.AspNet.CS.Controls.SlowTask slowTask2 =
    new Samples.AspNet.CS.Controls.SlowTask();
    Samples.AspNet.CS.Controls.SlowTask slowTask3 =
    new Samples.AspNet.CS.Controls.SlowTask();

    PageAsyncTask asyncTask1 = new PageAsyncTask(slowTask1.OnBegin, slowTask1.OnEnd, slowTask1.OnTimeout, "Async1", true);
    PageAsyncTask asyncTask2 = new PageAsyncTask(slowTask2.OnBegin, slowTask2.OnEnd, slowTask2.OnTimeout, "Async2", true);
    PageAsyncTask asyncTask3 = new PageAsyncTask(slowTask3.OnBegin, slowTask3.OnEnd, slowTask3.OnTimeout, "Async3", true);

    // Register the asynchronous task.
    Page.RegisterAsyncTask(asyncTask1);
    Page.RegisterAsyncTask(asyncTask2);
    Page.RegisterAsyncTask(asyncTask3);

    // Execute the register asynchronous task.
    Page.ExecuteRegisteredAsyncTasks();

    TaskMessage.InnerHtml = slowTask1.GetAsyncTaskProgress()+ "<br />" + slowTask2.GetAsyncTaskProgress() + "<br />" + slowTask3.GetAsyncTaskProgress();

  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" 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 SlowTask
    {
        private String _taskprogress;
        private AsyncTaskDelegate _dlgt;

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

        public String GetAsyncTaskProgress()
        {
            return _taskprogress;
        }
        public void ExecuteAsyncTask()
        {
            // Introduce an artificial delay to simulate a delayed 
            // asynchronous task.
            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 = "AsyncTask started at: " + DateTime.Now + ". ";

            _dlgt = new AsyncTaskDelegate(ExecuteAsyncTask);
            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 += "AsyncTask completed at: " + DateTime.Now;
            _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 += "AsyncTask failed to complete " +
                "because it exceeded the AsyncTimeout parameter.";
        }
    }
}

.NET Framework
Disponible depuis 2.0

Tous les membres statiques publics ( Shared en Visual Basic) de ce type sont thread-safe. Les membres d’instance n’ont pas la garantie d’être thread-safe.

Retour au début
Afficher: