Page.AddOnPreRenderCompleteAsync Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Registriert Anfangs- und Endereignishandlerdelegaten für eine asynchrone Seite.
Überlädt
AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) |
Registriert Anfangs- und Endereignishandlerdelegaten, die keine Zustandsinformationen für eine asynchrone Seite erfordern. |
AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object) |
Registriert Anfangs- und Endereignishandlerdelegaten für eine asynchrone Seite. |
AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler)
Registriert Anfangs- und Endereignishandlerdelegaten, die keine Zustandsinformationen für eine asynchrone Seite erfordern.
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)
Parameter
- beginHandler
- BeginEventHandler
Der Delegat für die BeginEventHandler-Methode.
- endHandler
- EndEventHandler
Der Delegat für die EndEventHandler-Methode.
Ausnahmen
Die <async>
-Seitendirektive ist nicht auf true
festgelegt.
- oder -
Die AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler)-Methode wird nach dem PreRender-Ereignis aufgerufen.
BeginHandler oder EndHandler ist null
.
Beispiele
Im folgenden Codebeispiel wird eine asynchrone Anforderung verwendet, um den HTML-Quellcode der Standardseite des lokalen Webservers in einem TextBox Steuerelement anzuzeigen.
Wichtig
Dieses Beispiel umfasst ein Textfeld, das Benutzereingaben akzeptiert, die ein potenzielles Sicherheitsrisiko darstellen. Standardmäßig stellen ASP.NET-Webseiten sicher, dass Benutzereingaben keine Skript- oder HTML-Elemente enthalten. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.
<%@ 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>
Hinweise
Verwenden Sie die AddOnPreRenderCompleteAsync -Methode, um einer asynchronen Webseite Handler hinzuzufügen.
Sie können mehrere asynchrone Handler registrieren. Es wird jedoch jeweils nur ein Handler ausgeführt. Wenn Sie mehrere asynchrone Methoden gleichzeitig verarbeiten möchten, sollten Sie eine einzelne BeginEventHandler Methode verwenden und mehrere asynchrone Vorgänge über diesen Handler starten.
Die asynchronen Handler werden zwischen den PreRender Ereignissen und PreRenderComplete aufgerufen.
Zuerst werden alle Page Ereignisse (über das PreRender -Ereignis) ausgeführt, und dann wird jede registrierte BeginEventHandler Methode aufgerufen. Wenn der Handler abgeschlossen ist, wird die entsprechende EndEventHandler Methode aufgerufen. Wenn mehrere asynchrone Handler vorhanden sind, wird der nächste Handler aufgerufen.
Nachdem die registrierten asynchronen Ereignishandler aufgerufen wurden, werden die restlichen Seitenereignisse aufgerufen, beginnend mit dem PreRenderComplete -Ereignis.
Weitere Informationen
Gilt für:
AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object)
Registriert Anfangs- und Endereignishandlerdelegaten für eine asynchrone Seite.
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)
Parameter
- beginHandler
- BeginEventHandler
Der Delegat für die BeginEventHandler-Methode.
- endHandler
- EndEventHandler
Der Delegat für die EndEventHandler-Methode.
- state
- Object
Ein Objekt, das Zustandsinformationen für die Ereignishandler enthält.
Ausnahmen
Die <async>
-Seitendirektive ist nicht auf true
festgelegt.
- oder -
Die AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler)-Methode wird nach dem PreRender-Ereignis aufgerufen.
BeginHandler oder EndHandler ist null
.
Beispiele
Im folgenden Codebeispiel wird eine asynchrone Anforderung verwendet, um den HTML-Quellcode der Standardseite des lokalen Webservers in einem TextBox Steuerelement anzuzeigen.
Wichtig
Dieses Beispiel umfasst ein Textfeld, das Benutzereingaben akzeptiert, die ein potenzielles Sicherheitsrisiko darstellen. Standardmäßig stellen ASP.NET-Webseiten sicher, dass Benutzereingaben keine Skript- oder HTML-Elemente enthalten. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.
<%@ 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>
Hinweise
Verwenden Sie die AddOnPreRenderCompleteAsync -Methode, um einer asynchronen Webseite Handler hinzuzufügen, die Zustandsinformationen erfordern. Das im state
-Parameter übergebene Objekt kann ein beliebiges Objekt sein, das ihre Anwendung zum Übertragen von Informationen zwischen Ereignishandlerdelegaten benötigt, die in den beginHandler
Parametern und endHandler
angegeben sind.
Sie können mehrere asynchrone Handler registrieren. Es wird jedoch jeweils nur ein Handler ausgeführt. Wenn Sie mehrere asynchrone Methoden gleichzeitig verarbeiten möchten, sollten Sie eine einzelne BeginEventHandler Methode verwenden und mehrere asynchrone Vorgänge über diesen Handler starten.
Die asynchronen Handler werden zwischen den PreRender Ereignissen und PreRenderComplete aufgerufen.
Zuerst werden alle Page Ereignisse (über das PreRender -Ereignis) ausgeführt, und dann wird jede registrierte BeginEventHandler Methode aufgerufen. Wenn der Handler abgeschlossen ist, wird die entsprechende EndEventHandler Methode aufgerufen. Wenn mehrere asynchrone Handler vorhanden sind, wird der nächste Handler aufgerufen.
Nachdem die registrierten asynchronen Ereignishandler aufgerufen wurden, werden die restlichen Seitenereignisse aufgerufen, beginnend mit dem PreRenderComplete -Ereignis.