영어로 읽기

다음을 통해 공유


Page.AddOnPreRenderCompleteAsync 메서드

정의

비동기 페이지에 대한 시작 및 종료 이벤트 처리기 대리자를 등록합니다.

오버로드

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler)

비동기 페이지에 대한 상태 정보를 필요로 하지 않는 시작 및 종료 이벤트 처리기 대리자를 등록합니다.

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object)

비동기 페이지에 대한 시작 및 종료 이벤트 처리기 대리자를 등록합니다.

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler)

비동기 페이지에 대한 상태 정보를 필요로 하지 않는 시작 및 종료 이벤트 처리기 대리자를 등록합니다.

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

매개 변수

beginHandler
BeginEventHandler

BeginEventHandler 메서드의 대리자입니다.

endHandler
EndEventHandler

EndEventHandler 메서드의 대리자입니다.

예외

<async> 페이지 지시문이 true로 설정되지 않은 경우

또는

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) 메서드가 PreRender 이벤트 다음에 호출된 경우

BeginHandler 또는 EndHandlernull인 경우

예제

다음 코드 예제에서는 비동기 요청을 사용하여 로컬 웹 서버의 기본 페이지의 HTML 소스 코드를 컨트롤에 TextBox 표시합니다.

중요

이 예제에는 사용자 입력을 허용하는 텍스트 상자가 있으므로 보안상 위험할 수 있습니다. 기본적으로 ASP.NET 웹 페이지는 사용자 입력 내용에 스크립트 또는 HTML 요소가 포함되어 있지 않은지 확인합니다. 자세한 내용은 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>

설명

메서드를 AddOnPreRenderCompleteAsync 사용하여 비동기 웹 페이지에 처리기를 추가합니다.

여러 비동기 처리기를 등록할 수 있습니다. 그러나 한 번에 하나의 처리기만 실행됩니다. 여러 비동기 메서드를 동시에 처리하려면 단일 BeginEventHandler 메서드를 사용하고 해당 처리기에서 여러 비동기 작업을 시작해야 합니다.

비동기 처리기는 및 PreRenderComplete 이벤트 간에 PreRender 호출됩니다.

먼저 이벤트를 통해 PreRender 모든 Page 이벤트가 실행되고 등록된 BeginEventHandler 각 메서드가 호출됩니다. 처리기가 완료되면 해당 EndEventHandler 메서드가 호출됩니다. 비동기 처리기가 여러 대 있는 경우 다음 처리기가 호출됩니다.

등록된 비동기 이벤트 처리기가 호출된 후 나머지 페이지 이벤트가 이벤트부터 PreRenderComplete 호출됩니다.

추가 정보

적용 대상

.NET Framework 4.8.1 및 기타 버전
제품 버전
.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)

비동기 페이지에 대한 시작 및 종료 이벤트 처리기 대리자를 등록합니다.

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

매개 변수

beginHandler
BeginEventHandler

BeginEventHandler 메서드의 대리자입니다.

endHandler
EndEventHandler

EndEventHandler 메서드의 대리자입니다.

state
Object

이벤트 처리기에 대한 상태 정보가 들어 있는 개체입니다.

예외

<async> 페이지 지시문이 true로 설정되지 않은 경우

또는

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) 메서드가 PreRender 이벤트 다음에 호출된 경우

BeginHandler 또는 EndHandlernull인 경우

예제

다음 코드 예제에서는 비동기 요청을 사용하여 로컬 웹 서버의 기본 페이지의 HTML 소스 코드를 컨트롤에 TextBox 표시합니다.

중요

이 예제에는 사용자 입력을 허용하는 텍스트 상자가 있으므로 보안상 위험할 수 있습니다. 기본적으로 ASP.NET 웹 페이지는 사용자 입력 내용에 스크립트 또는 HTML 요소가 포함되어 있지 않은지 확인합니다. 자세한 내용은 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>

설명

메서드를 AddOnPreRenderCompleteAsync 사용하여 상태 정보가 필요한 처리기를 비동기 웹 페이지에 추가합니다. 에 전달 된 개체를 state 매개 변수는 애플리케이션에 지정 된 이벤트 처리기 대리자 간에 정보를 전송 해야 하는 개체 수를 beginHandlerendHandler 매개 변수입니다.

여러 비동기 처리기를 등록할 수 있습니다. 그러나 한 번에 하나의 처리기만 실행됩니다. 여러 비동기 메서드를 동시에 처리하려면 단일 BeginEventHandler 메서드를 사용하고 해당 처리기에서 여러 비동기 작업을 시작해야 합니다.

비동기 처리기는 및 PreRenderComplete 이벤트 간에 PreRender 호출됩니다.

먼저 이벤트를 통해 PreRender 모든 Page 이벤트가 실행되고 등록된 BeginEventHandler 각 메서드가 호출됩니다. 처리기가 완료되면 해당 EndEventHandler 메서드가 호출됩니다. 비동기 처리기가 여러 대 있는 경우 다음 처리기가 호출됩니다.

등록된 비동기 이벤트 처리기가 호출된 후 나머지 페이지 이벤트가 이벤트부터 PreRenderComplete 호출됩니다.

적용 대상

.NET Framework 4.8.1 및 기타 버전
제품 버전
.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