Page.AddOnPreRenderCompleteAsync 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
비동기 페이지에 대한 시작 및 종료 이벤트 처리기 대리자를 등록합니다.
오버로드
| Name | Description |
|---|---|
| AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) |
비동기 페이지에 대한 상태 정보가 필요하지 않은 시작 및 종료 이벤트 처리기 대리자를 등록합니다. |
| AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object) |
비동기 페이지에 대한 시작 및 종료 이벤트 처리기 대리자를 등록합니다. |
AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler)
비동기 페이지에 대한 상태 정보가 필요하지 않은 시작 및 종료 이벤트 처리기 대리자를 등록합니다.
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 입니다.
- endHandler
- EndEventHandler
메서드의 대리자 EndEventHandler 입니다.
예외
<async> 페이지 지시문이 .로 true설정되지 않았습니다.
-또는-
메서드는 AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) 이벤트 후에 호출됩니다 PreRender .
또는 BeginHandlerEndHandler 입니다 null.
예제
다음 코드 예제에서는 비동기 요청을 사용하여 로컬 웹 서버의 기본 페이지의 HTML 소스 코드를 컨트롤에 TextBox 표시합니다.
Important
이 예제에는 잠재적인 보안 위협인 사용자 입력을 허용하는 텍스트 상자가 있습니다. 기본적으로 ASP.NET 웹 페이지는 사용자 입력에 스크립트 또는 HTML 요소가 포함되지 않는지 확인합니다. 자세한 내용은 스크립트 악용 개요를 참조하세요.
<%@ 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 사용하여 비동기 웹 페이지에 처리기를 추가합니다.
여러 비동기 처리기를 등록할 수 있습니다. 그러나 한 번에 하나의 처리기만 실행됩니다. 여러 비동기 메서드를 동시에 처리하려면 단일 BeginEventHandler 메서드를 사용하고 해당 처리기에서 여러 비동기 작업을 시작해야 합니다.
비동기 처리기는 이벤트와 PreRender 이벤트 간에 PreRenderComplete 호출됩니다.
먼저 이벤트를 통해 Page 모든 PreRender 이벤트가 실행된 다음 등록된 BeginEventHandler 각 메서드가 호출됩니다. 처리기가 완료되면 해당 EndEventHandler 메서드가 호출됩니다. 여러 비동기 처리기가 있는 경우 다음 처리기가 호출됩니다.
등록된 비동기 이벤트 처리기가 호출되면 이벤트부터 시작하여 PreRenderComplete 나머지 페이지 이벤트가 호출됩니다.
추가 정보
적용 대상
AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object)
비동기 페이지에 대한 시작 및 종료 이벤트 처리기 대리자를 등록합니다.
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 입니다.
- endHandler
- EndEventHandler
메서드의 대리자 EndEventHandler 입니다.
- state
- Object
이벤트 처리기에 대한 상태 정보를 포함하는 개체입니다.
예외
<async> 페이지 지시문이 .로 true설정되지 않았습니다.
-또는-
메서드는 AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) 이벤트 후에 호출됩니다 PreRender .
또는 BeginHandlerEndHandler 입니다 null.
예제
다음 코드 예제에서는 비동기 요청을 사용하여 로컬 웹 서버의 기본 페이지의 HTML 소스 코드를 컨트롤에 TextBox 표시합니다.
Important
이 예제에는 잠재적인 보안 위협인 사용자 입력을 허용하는 텍스트 상자가 있습니다. 기본적으로 ASP.NET 웹 페이지는 사용자 입력에 스크립트 또는 HTML 요소가 포함되지 않는지 확인합니다. 자세한 내용은 스크립트 악용 개요를 참조하세요.
<%@ 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 사용하여 상태 정보가 필요한 처리기를 비동기 웹 페이지에 추가합니다. 매개 변수에 전달된 개체는 애플리케이션에서 state 지정된 beginHandlerendHandler 이벤트 처리기 대리자와 매개 변수 간에 정보를 전송하는 데 필요한 모든 개체일 수 있습니다.
여러 비동기 처리기를 등록할 수 있습니다. 그러나 한 번에 하나의 처리기만 실행됩니다. 여러 비동기 메서드를 동시에 처리하려면 단일 BeginEventHandler 메서드를 사용하고 해당 처리기에서 여러 비동기 작업을 시작해야 합니다.
비동기 처리기는 이벤트와 PreRender 이벤트 간에 PreRenderComplete 호출됩니다.
먼저 이벤트를 통해 Page 모든 PreRender 이벤트가 실행된 다음 등록된 BeginEventHandler 각 메서드가 호출됩니다. 처리기가 완료되면 해당 EndEventHandler 메서드가 호출됩니다. 여러 비동기 처리기가 있는 경우 다음 처리기가 호출됩니다.
등록된 비동기 이벤트 처리기가 호출되면 이벤트부터 시작하여 PreRenderComplete 나머지 페이지 이벤트가 호출됩니다.