Page.AsyncTimeout プロパティ
アセンブリ: System.Web (system.web.dll 内)

Dim instance As Page Dim value As TimeSpan value = instance.AsyncTimeout instance.AsyncTimeout = value
/** @property */ public TimeSpan get_AsyncTimeout () /** @property */ public void set_AsyncTimeout (TimeSpan value)
非同期操作を完了するまでの、許容される時間間隔を格納している TimeSpan。既定の時間間隔は 45 秒です。

ページの非同期のタイムアウトは、ページで非同期操作が実行されるまでの待機時間を表します。ほとんどの場合、コード内にこのプロパティを設定する必要はありません。Web 構成ファイルか @ Page ディレクティブの pages 要素を使用して、ページの非同期のタイムアウト間隔を設定します。ページの構成セクションで設定されている値は、ページ ディレクティブによってオーバーライドされます。
PageAsyncTask クラスを使用して非同期操作を定義し、開始ハンドラ、終了ハンドラ、およびタイムアウト ハンドラを登録します。非同期操作が指定した時間内で完了しない場合、タイムアウト ハンドラが呼び出されます。

ExecuteRegisteredAsyncTasks メソッドと RegisterAsyncTask メソッドでの AsyncTimeout プロパティの使用方法を次のコード例に示します。開始ハンドラ、終了ハンドラ、およびタイムアウト ハンドラの使用方法に注意してください。この例では非同期操作の状況を説明するために、AsyncTimeout プロパティで指定して操作に割り当てた時間を超えるように、人為的に遅延させています。実際の状況では、データベース コールまたはイメージの生成などを実行するために非同期操作を使用できます。その場合タイムアウト ハンドラを使用することで、操作の実行が指定時間内に完了しない場合に、性能を低下させて機能維持 (グレースフル デグラデーション) が行われます。AsyncTimeout プロパティがページ ディレクティブで設定されていることに注意してください。
<%@ Page Language="VB" AsyncTimeout="2"%> <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 > <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="C#" AsyncTimeout="2"%> <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 > <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>
Imports Microsoft.VisualBasic Imports System 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
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."; } } }

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- Page.AsyncTimeout プロパティのページへのリンク