Click to Rate and Give Feedback
MSDN
MSDN Library
.NET Development
Previous Versions
.NET Framework 2.0
System.Web.UI
Page Class
Page Methods
 AddOnPreRenderCompleteAsync Method ...
Collapse All/Expand All Collapse All
This page is specific to
Microsoft Visual Studio 2005/.NET Framework 2.0

Other versions are also available for the following:
.NET Framework Class Library
Page.AddOnPreRenderCompleteAsync Method (BeginEventHandler, EndEventHandler)

Note: This method is new in the .NET Framework version 2.0.

Registers beginning and ending event handler delegates that do not require state information for an asynchronous page.

Namespace: System.Web.UI
Assembly: System.Web (in system.web.dll)

Visual Basic (Declaration)
Public Sub AddOnPreRenderCompleteAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler _
)
Visual Basic (Usage)
Dim instance As Page
Dim beginHandler As BeginEventHandler
Dim endHandler As EndEventHandler

instance.AddOnPreRenderCompleteAsync(beginHandler, endHandler)
C#
public void AddOnPreRenderCompleteAsync (
    BeginEventHandler beginHandler,
    EndEventHandler endHandler
)
C++
public:
void AddOnPreRenderCompleteAsync (
    BeginEventHandler^ beginHandler, 
    EndEventHandler^ endHandler
)
J#
public void AddOnPreRenderCompleteAsync (
    BeginEventHandler beginHandler, 
    EndEventHandler endHandler
)
JScript
public function AddOnPreRenderCompleteAsync (
    beginHandler : BeginEventHandler, 
    endHandler : EndEventHandler
)

Parameters

beginHandler

The delegate for the BeginEventHandler method.

endHandler

The delegate for the EndEventHandler method.

Exception typeCondition

InvalidOperationException

The <async> page directive is not set to true.

- or -

The AddOnPreRenderCompleteAsync method is called after the PreRender event.

ArgumentNullException

The BeginHandler or EndHandler is a null reference (Nothing in Visual Basic).

Use the AddOnPreRenderCompleteAsync method to add handlers to an asynchronous Web page.

You can register multiple asynchronous handlers; however, only one handler runs at a time. If you want to process multiple asynchronous methods simultaneously, you should use a single BeginEventHandler method and launch multiple asynchronous operations from that handler.

The asynchronous handlers are called between the PreRender and PreRenderComplete events.

First, all Page events (through the PreRender event) are run, and then each registered BeginEventHandler method is called. When the handler completes, the corresponding EndEventHandler method is called. If there are multiple asynchronous handlers, the next handler is called.

After the registered asynchronous event handlers have been called, the rest of the page events are called, beginning with the PreRenderComplete event.

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.

Visual Basic
<%@ page language="VB" Async="true"%>
<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>
  <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>
C#
<%@ page language="C#" Async="true"%>
<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>
  <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>

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

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Processing
© 2009 Microsoft Corporation. All rights reserved. Terms of Use | Trademarks | Privacy Statement | Site Feedback
Page view tracker