Page.AddOnPreRenderCompleteAsync 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
비동기 페이지에 대한 시작 및 종료 이벤트 처리기 대리자를 등록합니다.
오버로드
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 이벤트 다음에 호출된 경우
BeginHandler 또는 EndHandler가 null
인 경우
예제
다음 코드 예제에서는 비동기 요청을 사용하여 로컬 웹 서버의 기본 페이지의 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>
<%@ 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 메서드를 사용하고 해당 처리기에서 여러 비동기 작업을 시작해야 합니다.
비동기 처리기는 및 PreRenderComplete 이벤트 간에 PreRender 호출됩니다.
먼저 이벤트를 통해 PreRender 모든 Page 이벤트가 실행되고 등록된 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 이벤트 다음에 호출된 경우
BeginHandler 또는 EndHandler가 null
인 경우
예제
다음 코드 예제에서는 비동기 요청을 사용하여 로컬 웹 서버의 기본 페이지의 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>
<%@ 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
매개 변수는 애플리케이션에 지정 된 이벤트 처리기 대리자 간에 정보를 전송 해야 하는 개체 수를 beginHandler
및 endHandler
매개 변수입니다.
여러 비동기 처리기를 등록할 수 있습니다. 그러나 한 번에 하나의 처리기만 실행됩니다. 여러 비동기 메서드를 동시에 처리하려면 단일 BeginEventHandler 메서드를 사용하고 해당 처리기에서 여러 비동기 작업을 시작해야 합니다.
비동기 처리기는 및 PreRenderComplete 이벤트 간에 PreRender 호출됩니다.
먼저 이벤트를 통해 PreRender 모든 Page 이벤트가 실행되고 등록된 BeginEventHandler 각 메서드가 호출됩니다. 처리기가 완료되면 해당 EndEventHandler 메서드가 호출됩니다. 비동기 처리기가 여러 대 있는 경우 다음 처리기가 호출됩니다.
등록된 비동기 이벤트 처리기가 호출된 후 나머지 페이지 이벤트가 이벤트부터 PreRenderComplete 호출됩니다.
적용 대상
.NET