Page.AddOnPreRenderCompleteAsync Метод

Определение

Регистрирует делегаты обработчика начального и конечного событий для асинхронной страницы.Registers beginning and ending event handler delegates for an asynchronous page.

Перегрузки

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler)

Регистрирует делегаты, не требующих информации о состоянии, обработчика начального и конечного событий для асинхронной страницы.Registers beginning and ending event handler delegates that do not require state information for an asynchronous page.

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object)

Регистрирует делегаты обработчика начального и конечного событий для асинхронной страницы.Registers beginning and ending event handler delegates for an asynchronous page.

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.The delegate for the BeginEventHandler method.

endHandler
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.

Значение параметра BeginHandler или EndHandlernull.The BeginHandler or EndHandler is null.

Примеры

В следующем примере кода используется асинхронный запрос для вывода исходного кода 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, проверяются на наличие скриптов и 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 для добавления обработчиков на асинхронную веб-страницу.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. Если требуется обрабатывать несколько асинхронных методов одновременно, следует использовать один метод 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)

Регистрирует делегаты обработчика начального и конечного событий для асинхронной страницы.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.The delegate for the BeginEventHandler method.

endHandler
EndEventHandler

Делегат для метода EndEventHandler.The delegate for the EndEventHandler method.

state
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.

Значение параметра BeginHandler или EndHandlernull.The BeginHandler or EndHandler is null.

Примеры

В следующем примере кода используется асинхронный запрос для вывода исходного кода 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, проверяются на наличие скриптов и 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, чтобы добавить обработчики, требующие сведения о состоянии для асинхронной веб-страницы.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.

Можно зарегистрировать несколько асинхронных обработчиков. Однако в каждый момент времени выполняется только один обработчик.You can register multiple asynchronous handlers; however, only one handler runs at a time. Если требуется обрабатывать несколько асинхронных методов одновременно, следует использовать один метод 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.

Применяется к