Page.ExecuteRegisteredAsyncTasks Yöntem

Tanım

Zaman uyumsuz bir görevin yürütülmesini başlatır.

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

Özel durumlar

Zaman uyumsuz görevde bir özel durum var.

Örnekler

Aşağıdaki kod örneği, ve RegisterAsyncTask yöntemleriyle ExecuteRegisteredAsyncTasks özelliğinin AsyncTimeout kullanımını gösterir. Başlangıç, bitiş ve zaman aşımı işleyicilerinin kullanımına dikkat edin. Örnekte, özellikte belirtilen görev için ayrılan süreyi aşan zaman uyumsuz bir görevin durumunu göstermek için yapay bir gecikme ortaya AsyncTimeout çıkar. Gerçek dünya senaryosunda, zaman uyumsuz bir görev, örneğin veritabanı çağrıları veya görüntü oluşturma gerçekleştirmek için kullanılabilir ve zaman aşımı işleyicisi, görev belirli bir süre içinde gerçekleştirilmezse düzgün bir düşüş sağlar.

<%@ 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

Açıklamalar

sınıfını PageAsyncTask kullanarak zaman uyumsuz bir görev tanımlayın. Görev tanımlanıp yöntemi kullanılarak RegisterAsyncTask sayfaya kaydedildikten sonra, ExecuteRegisteredAsyncTasks zaman uyumsuz görevi başlatmak için yöntemi çağrılabilir.

Yöntem ExecuteRegisteredAsyncTasks , zaman uyumsuz olmayan bir sayfa için kayıtlı zaman uyumsuz görevler (varsa) çağrıldığında sayfa işleme noktasında otomatik olarak çağrılır. Bu otomatik çağrı ExecuteRegisteredAsyncTasks , olaydan hemen önce PreRenderComplete gerçekleşir. Bu yönteme otomatik ExecuteRegisteredAsyncTasks çağrı dışında zaman zaman çağrılmasını istediğiniz görevler için yöntemini çağırın. Zaman uyumsuz görevlerin birden çok kez çağrılsa bile ExecuteRegisteredAsyncTasks yalnızca bir kez yürütüleceğini unutmayın.

yöntemine AsyncTimeout yapılan her çağrıda ExecuteRegisteredAsyncTasks özelliği sıfırlanır. yöntemini çağırmadan önce değerinin AsyncTimeoutExecuteRegisteredAsyncTasks son değeri önceliklidir. Zaman uyumsuz bir görev değerinden daha fazlasını AsyncTimeoutalırsa, bu ExecuteRegisteredAsyncTasks çağrı sırasında çağrılan sonraki görevler hemen zaman aşımına uğradı.

Şunlara uygulanır

Ayrıca bkz.