Page.AddOnPreRenderCompleteAsync Page.AddOnPreRenderCompleteAsync Page.AddOnPreRenderCompleteAsync Page.AddOnPreRenderCompleteAsync Method

定義

非同期ページの開始イベント ハンドラー デリゲートおよび終了イベント ハンドラー デリゲートを登録します。Registers beginning and ending event handler delegates for an asynchronous page.

オーバーロード

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler)

非同期ページの状態情報を必要としない開始イベント ハンドラー デリゲートおよび終了イベント ハンドラー デリゲートを登録します。Registers beginning and ending event handler delegates that do not require state information for an asynchronous page.

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object) AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object) AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object) AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object)

非同期ページの開始イベント ハンドラー デリゲートおよび終了イベント ハンドラー デリゲートを登録します。Registers beginning and ending event handler delegates for an asynchronous page.

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler)

非同期ページの状態情報を必要としない開始イベント ハンドラー デリゲートおよび終了イベント ハンドラー デリゲートを登録します。Registers beginning and ending event handler delegates that do not require state information for an asynchronous page.

public:
 void AddOnPreRenderCompleteAsync(System::Web::BeginEventHandler ^ beginHandler, System::Web::EndEventHandler ^ endHandler);
public void AddOnPreRenderCompleteAsync (System.Web.BeginEventHandler beginHandler, System.Web.EndEventHandler endHandler);
member this.AddOnPreRenderCompleteAsync : System.Web.BeginEventHandler * System.Web.EndEventHandler -> unit
Public Sub AddOnPreRenderCompleteAsync (beginHandler As BeginEventHandler, endHandler As EndEventHandler)

パラメーター

beginHandler
BeginEventHandler BeginEventHandler BeginEventHandler BeginEventHandler

BeginEventHandler メソッドへのデリゲート。The delegate for the BeginEventHandler method.

endHandler
EndEventHandler EndEventHandler EndEventHandler EndEventHandler

EndEventHandler メソッドへのデリゲート。The delegate for the EndEventHandler method.

例外

<async> ページ ディレクティブが、true に設定されていません。The <async> page directive is not set to true.

- または --or- AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) メソッドは、PreRender イベントの後で呼び出されます。The AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) method is called after the PreRender event.

次のコード例では、非同期要求を使用して、ローカル Web サーバーの既定のページの HTML ソースTextBoxコードをコントロールに表示します。The following code example uses an asynchronous request to display the HTML source code of the local Web server's default page in a TextBox control.

重要

この例には、ユーザー入力を受け付けるテキスト ボックスがあります。これにより、セキュリティが脆弱になる可能性があります。This example has a text box that accepts user input, which is a potential security threat. 既定では、ASP.NET Web ページによって、ユーザー入力にスクリプトまたは HTML 要素が含まれていないかどうかが検証されます。By default, ASP.NET Web pages validate that user input does not include script or HTML elements. 詳細については、「スクリプトによる攻略の概要」を参照してください。For more information, see Script Exploits Overview.

<%@ page language="C#" Async="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  System.Net.WebRequest myRequest;

  void Page_Load(object sender, EventArgs e)
  {
    Label1.Text = "Page_Load: thread #" + System.Threading.Thread.CurrentThread.GetHashCode();

    BeginEventHandler bh = new BeginEventHandler(this.BeginGetAsyncData);
    EndEventHandler eh = new EndEventHandler(this.EndGetAsyncData);

    AddOnPreRenderCompleteAsync(bh, eh);

    // Initialize the WebRequest.
    string address = "http://localhost/";

    myRequest = System.Net.WebRequest.Create(address);
  }

  IAsyncResult BeginGetAsyncData(Object src, EventArgs args, AsyncCallback cb, Object state)
  {
    Label2.Text = "BeginGetAsyncData: thread #" + System.Threading.Thread.CurrentThread.GetHashCode();
    return myRequest.BeginGetResponse(cb, state);
  }

  void EndGetAsyncData(IAsyncResult ar)
  {
    Label3.Text = "EndGetAsyncData: thread #" + System.Threading.Thread.CurrentThread.GetHashCode();

    System.Net.WebResponse myResponse = myRequest.EndGetResponse(ar);

    result.Text = new System.IO.StreamReader(myResponse.GetResponseStream()).ReadToEnd();
    myResponse.Close();
  }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>
      Page.AddOnPreRenderCompleteAsync Example</title>
  </head>
  <body>
    <form id="form1" runat="server">
      <asp:label id="Label1" runat="server">
        Label 1</asp:label><br />
      <asp:label id="Label2" runat="server">
        Label 2</asp:label><br />
      <asp:label id="Label3" runat="server">
        Label 3</asp:label><br />
      <asp:textbox id="result" runat="server" textMode="multiLine" ReadOnly="true" columns="80" rows="25" />
    </form>
  </body>
</html>
<%@ page language="VB" Async="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  Dim myRequest As System.Net.WebRequest
  
  Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    Label1.Text = "Page_Load: Thread #" & System.Threading.Thread.CurrentThread.GetHashCode()
    
    Dim bh As New BeginEventHandler(AddressOf Me.BeginGetAsyncData)
    Dim eh As New EndEventHandler(AddressOf Me.EndGetAsyncData)
    
    Me.AddOnPreRenderCompleteAsync(bh, eh)
    
    ' Initialize the WebRequest object.
    Dim address As String
    address = "http://localhost/"
    myRequest = System.Net.WebRequest.Create(address)
    
  End Sub
  
  Function BeginGetAsyncData(ByVal src As Object, ByVal args As EventArgs, ByVal cb As AsyncCallback, ByVal state As Object) As IAsyncResult
    Label2.Text = "BeginGetAsyncData: Thread #" & System.Threading.Thread.CurrentThread.GetHashCode()
    Return Me.myRequest.BeginGetResponse(cb, state)
  End Function
  
  Sub EndGetAsyncData(ByVal ar As IAsyncResult)
    Label3.Text = "EndGetAsyncData: Thread #" & System.Threading.Thread.CurrentThread.GetHashCode()
    
    Dim myResponse As System.Net.WebResponse
    myResponse = Me.myRequest.EndGetResponse(ar)
    
    Dim reader As New System.IO.StreamReader(myResponse.GetResponseStream())
    result.Text = reader.ReadToEnd()
    myResponse.Close()
  End Sub
  
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>
      Page.AddOnPreRenderCompleteAsync Example</title>
  </head>
  <body>
    <form id="form1" runat="server">
      <asp:label id="Label1" runat="server">
        Label 1</asp:label><br />
      <asp:label id="Label2" runat="server">
        Label 2</asp:label><br />
      <asp:label id="Label3" runat="server">
        Label 3</asp:label><br />
      <asp:textbox id="result" runat="server" textMode="multiLine" ReadOnly="true" columns="80" rows="25" />
    </form>
  </body>
</html>

注釈

メソッドをAddOnPreRenderCompleteAsync使用して、非同期 Web ページにハンドラーを追加します。Use the AddOnPreRenderCompleteAsync method to add handlers to an asynchronous Web page.

複数の非同期ハンドラーを登録できます。ただし、一度に実行されるハンドラーは1つだけです。You can register multiple asynchronous handlers; however, only one handler runs at a time. 複数の非同期メソッドを同時に処理する場合は、1つBeginEventHandlerのメソッドを使用し、そのハンドラーから複数の非同期操作を起動する必要があります。If you want to process multiple asynchronous methods simultaneously, you should use a single BeginEventHandler method and launch multiple asynchronous operations from that handler.

非同期ハンドラーは、イベントとPreRender PreRenderCompleteイベントの間で呼び出されます。The asynchronous handlers are called between the PreRender and PreRenderComplete events.

まず、( Pageイベントを通じてPreRender ) すべてのイベントが実行され、 BeginEventHandler登録された各メソッドが呼び出されます。First, all Page events (through the PreRender event) are run, and then each registered BeginEventHandler method is called. ハンドラーが完了すると、対応EndEventHandlerするメソッドが呼び出されます。When the handler completes, the corresponding EndEventHandler method is called. 複数の非同期ハンドラーがある場合は、次のハンドラーが呼び出されます。If there are multiple asynchronous handlers, the next handler is called.

登録されている非同期イベントハンドラーが呼び出された後、 PreRenderCompleteイベントから順にページイベントの残りの部分が呼び出されます。After the registered asynchronous event handlers have been called, the rest of the page events are called, beginning with the PreRenderComplete event.

こちらもご覧ください

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object) AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object) AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object) AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object)

非同期ページの開始イベント ハンドラー デリゲートおよび終了イベント ハンドラー デリゲートを登録します。Registers beginning and ending event handler delegates for an asynchronous page.

public:
 void AddOnPreRenderCompleteAsync(System::Web::BeginEventHandler ^ beginHandler, System::Web::EndEventHandler ^ endHandler, System::Object ^ state);
public void AddOnPreRenderCompleteAsync (System.Web.BeginEventHandler beginHandler, System.Web.EndEventHandler endHandler, object state);
member this.AddOnPreRenderCompleteAsync : System.Web.BeginEventHandler * System.Web.EndEventHandler * obj -> unit
Public Sub AddOnPreRenderCompleteAsync (beginHandler As BeginEventHandler, endHandler As EndEventHandler, state As Object)

パラメーター

beginHandler
BeginEventHandler BeginEventHandler BeginEventHandler BeginEventHandler

BeginEventHandler メソッドへのデリゲート。The delegate for the BeginEventHandler method.

endHandler
EndEventHandler EndEventHandler EndEventHandler EndEventHandler

EndEventHandler メソッドへのデリゲート。The delegate for the EndEventHandler method.

state
Object Object Object Object

イベント ハンドラーの状態情報を格納しているオブジェクト。An object containing state information for the event handlers.

例外

<async> ページ ディレクティブが、true に設定されていません。The <async> page directive is not set to true.

または-or- AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) メソッドは、PreRender イベントの後で呼び出されます。The AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) method is called after the PreRender event.

次のコード例では、非同期要求を使用して、ローカル Web サーバーの既定のページの HTML ソースTextBoxコードをコントロールに表示します。The following code example uses an asynchronous request to display the HTML source code of the local Web server's default page in a TextBox control.

重要

この例には、ユーザー入力を受け付けるテキスト ボックスがあります。これにより、セキュリティが脆弱になる可能性があります。This example has a text box that accepts user input, which is a potential security threat. 既定では、ASP.NET Web ページによって、ユーザー入力にスクリプトまたは HTML 要素が含まれていないかどうかが検証されます。By default, ASP.NET Web pages validate that user input does not include script or HTML elements. 詳細については、「スクリプトによる攻略の概要」を参照してください。For more information, see Script Exploits Overview.

<%@ page language="C#" Async="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  System.Net.WebRequest myRequest;

  void Page_Load(object sender, EventArgs e)
  {
    Label1.Text = "Page_Load: thread #" + System.Threading.Thread.CurrentThread.GetHashCode();

    BeginEventHandler bh = new BeginEventHandler(this.BeginGetAsyncData);
    EndEventHandler eh = new EndEventHandler(this.EndGetAsyncData);

    AddOnPreRenderCompleteAsync(bh, eh);

    // Initialize the WebRequest.
    string address = "http://localhost/";

    myRequest = System.Net.WebRequest.Create(address);
  }

  IAsyncResult BeginGetAsyncData(Object src, EventArgs args, AsyncCallback cb, Object state)
  {
    Label2.Text = "BeginGetAsyncData: thread #" + System.Threading.Thread.CurrentThread.GetHashCode();
    return myRequest.BeginGetResponse(cb, state);
  }

  void EndGetAsyncData(IAsyncResult ar)
  {
    Label3.Text = "EndGetAsyncData: thread #" + System.Threading.Thread.CurrentThread.GetHashCode();

    System.Net.WebResponse myResponse = myRequest.EndGetResponse(ar);

    result.Text = new System.IO.StreamReader(myResponse.GetResponseStream()).ReadToEnd();
    myResponse.Close();
  }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>
      Page.AddOnPreRenderCompleteAsync Example</title>
  </head>
  <body>
    <form id="form1" runat="server">
      <asp:label id="Label1" runat="server">
        Label 1</asp:label><br />
      <asp:label id="Label2" runat="server">
        Label 2</asp:label><br />
      <asp:label id="Label3" runat="server">
        Label 3</asp:label><br />
      <asp:textbox id="result" runat="server" textMode="multiLine" ReadOnly="true" columns="80" rows="25" />
    </form>
  </body>
</html>
<%@ page language="VB" Async="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  Dim myRequest As System.Net.WebRequest
  
  Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    Label1.Text = "Page_Load: Thread #" & System.Threading.Thread.CurrentThread.GetHashCode()
    
    Dim bh As New BeginEventHandler(AddressOf Me.BeginGetAsyncData)
    Dim eh As New EndEventHandler(AddressOf Me.EndGetAsyncData)
    
    Me.AddOnPreRenderCompleteAsync(bh, eh)
    
    ' Initialize the WebRequest object.
    Dim address As String
    address = "http://localhost/"
    myRequest = System.Net.WebRequest.Create(address)
    
  End Sub
  
  Function BeginGetAsyncData(ByVal src As Object, ByVal args As EventArgs, ByVal cb As AsyncCallback, ByVal state As Object) As IAsyncResult
    Label2.Text = "BeginGetAsyncData: Thread #" & System.Threading.Thread.CurrentThread.GetHashCode()
    Return Me.myRequest.BeginGetResponse(cb, state)
  End Function
  
  Sub EndGetAsyncData(ByVal ar As IAsyncResult)
    Label3.Text = "EndGetAsyncData: Thread #" & System.Threading.Thread.CurrentThread.GetHashCode()
    
    Dim myResponse As System.Net.WebResponse
    myResponse = Me.myRequest.EndGetResponse(ar)
    
    Dim reader As New System.IO.StreamReader(myResponse.GetResponseStream())
    result.Text = reader.ReadToEnd()
    myResponse.Close()
  End Sub
  
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>
      Page.AddOnPreRenderCompleteAsync Example</title>
  </head>
  <body>
    <form id="form1" runat="server">
      <asp:label id="Label1" runat="server">
        Label 1</asp:label><br />
      <asp:label id="Label2" runat="server">
        Label 2</asp:label><br />
      <asp:label id="Label3" runat="server">
        Label 3</asp:label><br />
      <asp:textbox id="result" runat="server" textMode="multiLine" ReadOnly="true" columns="80" rows="25" />
    </form>
  </body>
</html>

注釈

メソッドをAddOnPreRenderCompleteAsync使用して、状態情報を必要とするハンドラーを非同期 Web ページに追加します。Use the AddOnPreRenderCompleteAsync method to add handlers that require state information to an asynchronous Web page. stateパラメーターで渡されるオブジェクトには、アプリケーションで、 beginHandlerおよびendHandlerパラメーターで指定されたイベントハンドラーデリゲート間で情報を転送するために必要な任意のオブジェクトを指定できます。The object passed in the state parameter can be any object that your application requires to transfer information between event handler delegates specified in the beginHandler and the endHandler parameters.

複数の非同期ハンドラーを登録できます。ただし、一度に実行されるハンドラーは1つだけです。You can register multiple asynchronous handlers; however, only one handler runs at a time. 複数の非同期メソッドを同時に処理する場合は、1つBeginEventHandlerのメソッドを使用し、そのハンドラーから複数の非同期操作を起動する必要があります。If you want to process multiple asynchronous methods simultaneously, you should use a single BeginEventHandler method and launch multiple asynchronous operations from that handler.

非同期ハンドラーは、イベントとPreRender PreRenderCompleteイベントの間で呼び出されます。The asynchronous handlers are called between the PreRender and PreRenderComplete events.

まず、( Pageイベントを通じてPreRender ) すべてのイベントが実行され、 BeginEventHandler登録された各メソッドが呼び出されます。First, all Page events (through the PreRender event) are run, and then each registered BeginEventHandler method is called. ハンドラーが完了すると、対応EndEventHandlerするメソッドが呼び出されます。When the handler completes, the corresponding EndEventHandler method is called. 複数の非同期ハンドラーがある場合は、次のハンドラーが呼び出されます。If there are multiple asynchronous handlers, the next handler is called.

登録されている非同期イベントハンドラーが呼び出された後、 PreRenderCompleteイベントから順にページイベントの残りの部分が呼び出されます。After the registered asynchronous event handlers have been called, the rest of the page events are called, beginning with the PreRenderComplete event.

適用対象