PageAsyncTaskとは? わかりやすく解説

PageAsyncTask クラス

メモ : このクラスは、.NET Framework version 2.0新しく追加されたものです。

ページ登録されている非同期タスクに関する情報格納します。このクラス継承できません。

名前空間: System.Web.UI
アセンブリ: System.Web (system.web.dll 内)
構文構文

Public NotInheritable Class
 PageAsyncTask
Dim instance As PageAsyncTask
public sealed class PageAsyncTask
public ref class PageAsyncTask sealed
public final class PageAsyncTask
public final class PageAsyncTask
解説解説

ASP.NET Version 2.0使用すると、1 つページ複数タスク登録しページ表示する前にこれらのタスク非同期実行できます。処理に時間のかかるタスクがある場合、このタスク実行中に他のプロセス停滞しないように、このタスク非同期実行するように指定できます非同期タスク並列処理することも順次処理することもできます

PageAsyncTask オブジェクトは、RegisterAsyncTask メソッド使用してページ登録する必要があります非同期タスク実行するために、ページ自体非同期処理する要はありません。ページ ディレクティブAsync 属性を (次のコード例に示すように) true設定してfalse設定しても、非同期タスク非同期処理されます。

<%@ Page Async="true" %>

Async 属性false設定した場合すべての非同期タスク完了するまで、ページ実行するスレッドブロックされます。

PreRenderComplete イベント前に登録され非同期タスクがまだ実行されていない場合ページによって自動的に実行されます。PreRenderComplete イベントの後に登録され非同期タスクは、ExecuteRegisteredAsyncTasks メソッド使用して明示的に実行する必要がありますExecuteRegisteredAsyncTasks メソッド使用してPreRenderComplete イベント前にタスク開始することもできますExecuteRegisteredAsyncTasks メソッドにより、ページ登録されている、まだ実行されていないすべての非同期タスク実行されます。

既定では、非同期タスク45 秒以内完了しなかった場合タイムアウトなります。Web.config ファイルまたはページ ディレクティブ別のタイムアウト値を指定できます。Web.config ファイル<pages> セクションでは、次に示すように、asyncTimeout 属性定義されます。

<system.web>

<pages asyncTimeout="30">

</pages>

</system.web>

ページ ディレクティブでは、次に示すように、AsyncTimeout 属性定義されます。

<%@ Page AsyncTimeout="30" %>

使用例使用例

3 つの非同期タスクページ登録し並列処理する方法次のコード例示します。各タスクは、単にスレッドを 5 秒間スリープ状態にするメソッド呼び出します。

<%@ Page Language="VB" %>

<!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 EventArgs)
      
        ' Define the asynchronuous task.
        Dim slowTask1 As New
 Samples.AspNet.VB.Controls.SlowTask()
        Dim slowTask2 As New
 Samples.AspNet.VB.Controls.SlowTask()
        Dim slowTask3 As New
 Samples.AspNet.VB.Controls.SlowTask()
     
        Dim asyncTask1 As New
 PageAsyncTask(AddressOf slowTask1.OnBegin, AddressOf
 slowTask1.OnEnd, AddressOf slowTask1.OnTimeout, "Async1", True)
        Dim asyncTask2 As New
 PageAsyncTask(AddressOf slowTask2.OnBegin, AddressOf
 slowTask2.OnEnd, AddressOf slowTask2.OnTimeout, "Async2", True)
        Dim asyncTask3 As New
 PageAsyncTask(AddressOf slowTask3.OnBegin, AddressOf
 slowTask3.OnEnd, AddressOf 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()

    End Sub
</script>

<html  >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <span id="TaskMessage" runat=server>
      </span>
    </div>
    </form>
</body>
</html>
<%@ Page Language="C#" Async="true" AsyncTimeout="35"%>

<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  >
<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>
Imports Microsoft.VisualBasic
Imports System.Threading

Namespace Samples.AspNet.VB.Controls

    Public Class SlowTask
        Private _taskprogress As String
        Private _dlgt As AsyncTaskDelegate

        ' Create delegate.
        Protected Delegate Sub
 AsyncTaskDelegate()

        Public Function GetAsyncTaskProgress()
 As String
            Return _taskprogress
        End Function

        Public Sub ExecuteAsyncTask()
            ' Introduce an artificial delay to simulate a delayed 
            ' asynchronous task.
            Thread.Sleep(TimeSpan.FromSeconds(5.0))
        End Sub

        ' 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 = "AsyncTask started at: "
 + DateTime.Now.ToString + ". "

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

            Return result
        End Function

        ' Define the method that will get called when
        ' the asynchronous task is ended.
        Public Sub OnEnd(ByVal
 ar As IAsyncResult)
            _taskprogress += "AsyncTask completed at: "
 + DateTime.Now.ToString
            _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 += "AsyncTask failed to complete "
 + _
                "because it exceeded the AsyncTimeout parameter."
        End Sub
    End Class
End Namespace
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 のセキュリティ.NET Frameworkセキュリティ
継承階層継承階層
System.Object
  System.Web.UI.PageAsyncTask
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
PageAsyncTask メンバ
System.Web.UI 名前空間

PageAsyncTask コンストラクタ (BeginEventHandler, EndEventHandler, EndEventHandler, Object)

メモ : このコンストラクタは、.NET Framework version 2.0新しく追加されたものです。

並列実行のために既定値使用して、PageAsyncTask クラス新しインスタンス初期化します。

名前空間: System.Web.UI
アセンブリ: System.Web (system.web.dll 内)
構文構文

Public Sub New ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    timeoutHandler As EndEventHandler, _
    state As Object _
)
Dim beginHandler As BeginEventHandler
Dim endHandler As EndEventHandler
Dim timeoutHandler As EndEventHandler
Dim state As Object

Dim instance As New PageAsyncTask(beginHandler,
 endHandler, timeoutHandler, state)
public PageAsyncTask (
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    EndEventHandler timeoutHandler,
    Object state
)
public:
PageAsyncTask (
    BeginEventHandler^ beginHandler, 
    EndEventHandler^ endHandler, 
    EndEventHandler^ timeoutHandler, 
    Object^ state
)
public PageAsyncTask (
    BeginEventHandler beginHandler, 
    EndEventHandler endHandler, 
    EndEventHandler timeoutHandler, 
    Object state
)
public function PageAsyncTask (
    beginHandler : BeginEventHandler, 
    endHandler : EndEventHandler, 
    timeoutHandler : EndEventHandler, 
    state : Object
)

パラメータ

beginHandler

非同期タスク開始時に呼び出すハンドラ

endHandler

タイムアウト期限内にタスク正常に完了したときに呼び出すハンドラ

timeoutHandler

タイムアウト期限内にタスク正常に完了しなかったときに呼び出すハンドラ

state

タスクの状態を表すオブジェクト

例外例外
例外種類条件

ArgumentNullException

beginHandler パラメータまたは endHandler パラメータ指定されていません。

解説解説
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
PageAsyncTask クラス
PageAsyncTask メンバ
System.Web.UI 名前空間

PageAsyncTask コンストラクタ (BeginEventHandler, EndEventHandler, EndEventHandler, Object, Boolean)

メモ : このコンストラクタは、.NET Framework version 2.0新しく追加されたものです。

並列実行のために指定した値を使用して、PageAsyncTask クラス新しインスタンス初期化します。

名前空間: System.Web.UI
アセンブリ: System.Web (system.web.dll 内)
構文構文

Public Sub New ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    timeoutHandler As EndEventHandler, _
    state As Object, _
    executeInParallel As Boolean _
)
Dim beginHandler As BeginEventHandler
Dim endHandler As EndEventHandler
Dim timeoutHandler As EndEventHandler
Dim state As Object
Dim executeInParallel As Boolean

Dim instance As New PageAsyncTask(beginHandler,
 endHandler, timeoutHandler, state, executeInParallel)
public PageAsyncTask (
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    EndEventHandler timeoutHandler,
    Object state,
    bool executeInParallel
)
public:
PageAsyncTask (
    BeginEventHandler^ beginHandler, 
    EndEventHandler^ endHandler, 
    EndEventHandler^ timeoutHandler, 
    Object^ state, 
    bool executeInParallel
)
public PageAsyncTask (
    BeginEventHandler beginHandler, 
    EndEventHandler endHandler, 
    EndEventHandler timeoutHandler, 
    Object state, 
    boolean executeInParallel
)
public function PageAsyncTask (
    beginHandler : BeginEventHandler, 
    endHandler : EndEventHandler, 
    timeoutHandler : EndEventHandler, 
    state : Object, 
    executeInParallel : boolean
)

パラメータ

beginHandler

非同期タスク開始時に呼び出すハンドラ

endHandler

タイムアウト期限内にタスク正常に完了したときに呼び出すハンドラ

timeoutHandler

タイムアウト期限内にタスク正常に完了しなかったときに呼び出すハンドラ

state

タスクの状態を表すオブジェクト

executeInParallel

このタスクを他のタスク並列処理できるかどうかを示す値。

例外例外
例外種類条件

ArgumentNullException

beginHandler パラメータまたは endHandler パラメータ指定されていません。

解説解説
使用例使用例

互いに並列実行される 3 つの非同期タスク作成する方法次のコード例示します。この例は PageAsyncTask クラス概要取り上げているコード例一部です。

Dim asyncTask1 As New PageAsyncTask(AddressOf
 slowTask1.OnBegin, AddressOf slowTask1.OnEnd, AddressOf
 slowTask1.OnTimeout, "Async1", True)
Dim asyncTask2 As New PageAsyncTask(AddressOf
 slowTask2.OnBegin, AddressOf slowTask2.OnEnd, AddressOf
 slowTask2.OnTimeout, "Async2", True)
Dim asyncTask3 As New PageAsyncTask(AddressOf
 slowTask3.OnBegin, AddressOf slowTask3.OnEnd, AddressOf
 slowTask3.OnTimeout, "Async3", True)

' Register the asynchronous task.
Page.RegisterAsyncTask(asyncTask1)
Page.RegisterAsyncTask(asyncTask2)
Page.RegisterAsyncTask(asyncTask3)
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);
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
PageAsyncTask クラス
PageAsyncTask メンバ
System.Web.UI 名前空間

PageAsyncTask コンストラクタ

PageAsyncTask クラス新しインスタンス初期化します。
オーバーロードの一覧オーバーロードの一覧

名前 説明
PageAsyncTask (BeginEventHandler, EndEventHandler, EndEventHandler, Object) 並列実行のために既定値使用してPageAsyncTask クラス新しインスタンス初期化します。
PageAsyncTask (BeginEventHandler, EndEventHandler, EndEventHandler, Object, Boolean) 並列実行のために指定した値を使用してPageAsyncTask クラス新しインスタンス初期化します。
参照参照

関連項目

PageAsyncTask クラス
PageAsyncTask メンバ
System.Web.UI 名前空間

PageAsyncTask プロパティ


PageAsyncTask メソッド


PageAsyncTask メンバ

ページ登録されている非同期タスクに関する情報格納します。このクラス継承できません。

PageAsyncTask データ型公開されるメンバを以下の表に示します


パブリック コンストラクタパブリック コンストラクタ
パブリック プロパティパブリック プロパティ
パブリック メソッドパブリック メソッド
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

PageAsyncTask クラス
System.Web.UI 名前空間



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「PageAsyncTask」の関連用語

PageAsyncTaskのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



PageAsyncTaskのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS