Auf Englisch lesen

Freigeben über


Page.AddOnPreRenderCompleteAsync Methode

Definition

Registriert Anfangs- und Endereignishandlerdelegaten für eine asynchrone Seite.

Überlädt

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler)

Registriert Anfangs- und Endereignishandlerdelegaten, die keine Zustandsinformationen für eine asynchrone Seite erfordern.

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object)

Registriert Anfangs- und Endereignishandlerdelegaten für eine asynchrone Seite.

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler)

Registriert Anfangs- und Endereignishandlerdelegaten, die keine Zustandsinformationen für eine asynchrone Seite erfordern.

C#
public void AddOnPreRenderCompleteAsync (System.Web.BeginEventHandler beginHandler, System.Web.EndEventHandler endHandler);

Parameter

beginHandler
BeginEventHandler

Der Delegat für die BeginEventHandler-Methode.

endHandler
EndEventHandler

Der Delegat für die EndEventHandler-Methode.

Ausnahmen

Die <async>-Seitendirektive ist nicht auf true festgelegt.

- oder -

Die AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler)-Methode wird nach dem PreRender-Ereignis aufgerufen.

Beispiele

Im folgenden Codebeispiel wird eine asynchrone Anforderung verwendet, um den HTML-Quellcode der Standardseite des lokalen Webservers in einem TextBox Steuerelement anzuzeigen.

Wichtig

Dieses Beispiel umfasst ein Textfeld, das Benutzereingaben akzeptiert, die ein potenzielles Sicherheitsrisiko darstellen. Standardmäßig stellen ASP.NET-Webseiten sicher, dass Benutzereingaben keine Skript- oder HTML-Elemente enthalten. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.

ASP.NET (C#)
<%@ 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>

Hinweise

Verwenden Sie die AddOnPreRenderCompleteAsync -Methode, um einer asynchronen Webseite Handler hinzuzufügen.

Sie können mehrere asynchrone Handler registrieren. Es wird jedoch jeweils nur ein Handler ausgeführt. Wenn Sie mehrere asynchrone Methoden gleichzeitig verarbeiten möchten, sollten Sie eine einzelne BeginEventHandler Methode verwenden und mehrere asynchrone Vorgänge über diesen Handler starten.

Die asynchronen Handler werden zwischen den PreRender Ereignissen und PreRenderComplete aufgerufen.

Zuerst werden alle Page Ereignisse (über das PreRender -Ereignis) ausgeführt, und dann wird jede registrierte BeginEventHandler Methode aufgerufen. Wenn der Handler abgeschlossen ist, wird die entsprechende EndEventHandler Methode aufgerufen. Wenn mehrere asynchrone Handler vorhanden sind, wird der nächste Handler aufgerufen.

Nachdem die registrierten asynchronen Ereignishandler aufgerufen wurden, werden die restlichen Seitenereignisse aufgerufen, beginnend mit dem PreRenderComplete -Ereignis.

Weitere Informationen

Gilt für:

.NET Framework 4.8.1 und andere Versionen
Produkt Versionen
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object)

Registriert Anfangs- und Endereignishandlerdelegaten für eine asynchrone Seite.

C#
public void AddOnPreRenderCompleteAsync (System.Web.BeginEventHandler beginHandler, System.Web.EndEventHandler endHandler, object state);

Parameter

beginHandler
BeginEventHandler

Der Delegat für die BeginEventHandler-Methode.

endHandler
EndEventHandler

Der Delegat für die EndEventHandler-Methode.

state
Object

Ein Objekt, das Zustandsinformationen für die Ereignishandler enthält.

Ausnahmen

Die <async>-Seitendirektive ist nicht auf true festgelegt.

- oder -

Die AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler)-Methode wird nach dem PreRender-Ereignis aufgerufen.

Beispiele

Im folgenden Codebeispiel wird eine asynchrone Anforderung verwendet, um den HTML-Quellcode der Standardseite des lokalen Webservers in einem TextBox Steuerelement anzuzeigen.

Wichtig

Dieses Beispiel umfasst ein Textfeld, das Benutzereingaben akzeptiert, die ein potenzielles Sicherheitsrisiko darstellen. Standardmäßig stellen ASP.NET-Webseiten sicher, dass Benutzereingaben keine Skript- oder HTML-Elemente enthalten. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.

ASP.NET (C#)
<%@ 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>

Hinweise

Verwenden Sie die AddOnPreRenderCompleteAsync -Methode, um einer asynchronen Webseite Handler hinzuzufügen, die Zustandsinformationen erfordern. Das im state -Parameter übergebene Objekt kann ein beliebiges Objekt sein, das ihre Anwendung zum Übertragen von Informationen zwischen Ereignishandlerdelegaten benötigt, die in den beginHandler Parametern und endHandler angegeben sind.

Sie können mehrere asynchrone Handler registrieren. Es wird jedoch jeweils nur ein Handler ausgeführt. Wenn Sie mehrere asynchrone Methoden gleichzeitig verarbeiten möchten, sollten Sie eine einzelne BeginEventHandler Methode verwenden und mehrere asynchrone Vorgänge über diesen Handler starten.

Die asynchronen Handler werden zwischen den PreRender Ereignissen und PreRenderComplete aufgerufen.

Zuerst werden alle Page Ereignisse (über das PreRender -Ereignis) ausgeführt, und dann wird jede registrierte BeginEventHandler Methode aufgerufen. Wenn der Handler abgeschlossen ist, wird die entsprechende EndEventHandler Methode aufgerufen. Wenn mehrere asynchrone Handler vorhanden sind, wird der nächste Handler aufgerufen.

Nachdem die registrierten asynchronen Ereignishandler aufgerufen wurden, werden die restlichen Seitenereignisse aufgerufen, beginnend mit dem PreRenderComplete -Ereignis.

Gilt für:

.NET Framework 4.8.1 und andere Versionen
Produkt Versionen
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1