Page.AddOnPreRenderCompleteAsync Metoda

Definicja

Rejestruje delegatów programu obsługi zdarzeń rozpoczynających się i kończących dla strony asynchronicznej.

Przeciążenia

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler)

Rejestruje delegatów programu obsługi zdarzeń rozpoczynających i kończących, które nie wymagają informacji o stanie dla strony asynchronicznej.

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object)

Rejestruje delegatów programu obsługi zdarzeń rozpoczynających się i kończących dla strony asynchronicznej.

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler)

Rejestruje delegatów programu obsługi zdarzeń rozpoczynających i kończących, które nie wymagają informacji o stanie dla strony asynchronicznej.

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)

Parametry

beginHandler
BeginEventHandler

Delegat metody BeginEventHandler .

endHandler
EndEventHandler

Delegat metody EndEventHandler .

Wyjątki

Dyrektywa <async> page nie jest ustawiona na truewartość .

-lub-

Metoda jest wywoływana AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) po zdarzeniu PreRender .

Przykłady

W poniższym przykładzie kodu użyto asynchronicznego żądania w celu wyświetlenia kodu źródłowego HTML domyślnej strony lokalnego serwera sieci Web w kontrolce TextBox .

Ważne

Ten przykład zawiera pole tekstowe, które akceptuje dane wejściowe użytkownika, co jest potencjalnym zagrożeniem bezpieczeństwa. Domyślnie ASP.NET strony sieci Web sprawdzają, czy dane wejściowe użytkownika nie zawierają skryptów ani elementów HTML. Aby uzyskać więcej informacji, zobacz Script Exploits Overview (Omówienie luk w zabezpieczeniach skryptów).

<%@ 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>

Uwagi

AddOnPreRenderCompleteAsync Użyj metody , aby dodać programy obsługi do asynchronicznej strony sieci Web.

Można zarejestrować wiele asynchronicznych procedur obsługi; jednak tylko jeden program obsługi jest uruchamiany jednocześnie. Jeśli chcesz przetwarzać wiele metod asynchronicznych jednocześnie, należy użyć jednej BeginEventHandler metody i uruchomić wiele operacji asynchronicznych z tej procedury obsługi.

Asynchroniczne procedury obsługi są wywoływane między zdarzeniami PreRender i PreRenderComplete .

Najpierw wszystkie Page zdarzenia (za pośrednictwem PreRender zdarzenia) są uruchamiane, a następnie każda zarejestrowana BeginEventHandler metoda jest wywoływana. Po zakończeniu obsługi wywoływana jest odpowiednia EndEventHandler metoda. Jeśli istnieje wiele asynchronicznych procedur obsługi, zostanie wywołana następna procedura obsługi.

Po wywołaniu zarejestrowanych asynchronicznych procedur obsługi zdarzeń pozostałe zdarzenia strony są wywoływane, począwszy od PreRenderComplete zdarzenia.

Zobacz też

Dotyczy

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object)

Rejestruje delegatów programu obsługi zdarzeń rozpoczynających się i kończących dla strony asynchronicznej.

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)

Parametry

beginHandler
BeginEventHandler

Delegat metody BeginEventHandler .

endHandler
EndEventHandler

Delegat metody EndEventHandler .

state
Object

Obiekt zawierający informacje o stanie procedur obsługi zdarzeń.

Wyjątki

Dyrektywa <async> page nie jest ustawiona na truewartość .

-lub-

Metoda jest wywoływana AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) po zdarzeniu PreRender .

Przykłady

W poniższym przykładzie kodu użyto asynchronicznego żądania w celu wyświetlenia kodu źródłowego HTML domyślnej strony lokalnego serwera sieci Web w kontrolce TextBox .

Ważne

Ten przykład zawiera pole tekstowe, które akceptuje dane wejściowe użytkownika, co jest potencjalnym zagrożeniem bezpieczeństwa. Domyślnie ASP.NET strony sieci Web sprawdzają, czy dane wejściowe użytkownika nie zawierają skryptów ani elementów HTML. Aby uzyskać więcej informacji, zobacz Script Exploits Overview (Omówienie luk w zabezpieczeniach skryptów).

<%@ 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>

Uwagi

AddOnPreRenderCompleteAsync Użyj metody , aby dodać programy obsługi wymagające informacji o stanie do asynchronicznej strony sieci Web. Obiekt przekazany w parametrze state może być dowolnym obiektem wymaganym przez aplikację do przesyłania informacji między delegatami programu obsługi zdarzeń określonymi w parametrach beginHandlerendHandler i .

Można zarejestrować wiele asynchronicznych procedur obsługi; jednak tylko jeden program obsługi jest uruchamiany jednocześnie. Jeśli chcesz przetwarzać wiele metod asynchronicznych jednocześnie, należy użyć jednej BeginEventHandler metody i uruchomić wiele operacji asynchronicznych z tej procedury obsługi.

Asynchroniczne procedury obsługi są wywoływane między zdarzeniami PreRender i PreRenderComplete .

Najpierw wszystkie Page zdarzenia (za pośrednictwem PreRender zdarzenia) są uruchamiane, a następnie każda zarejestrowana BeginEventHandler metoda jest wywoływana. Po zakończeniu obsługi wywoływana jest odpowiednia EndEventHandler metoda. Jeśli istnieje wiele asynchronicznych procedur obsługi, zostanie wywołana następna procedura obsługi.

Po wywołaniu zarejestrowanych asynchronicznych procedur obsługi zdarzeń pozostałe zdarzenia strony są wywoływane, począwszy od PreRenderComplete zdarzenia.

Dotyczy