Page.AddOnPreRenderCompleteAsync Yöntem

Tanım

Zaman uyumsuz bir sayfa için başlangıç ve bitiş olay işleyicisi temsilcilerini kaydeder.

Aşırı Yüklemeler

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler)

Zaman uyumsuz bir sayfa için durum bilgisi gerektirmeyen başlangıç ve bitiş olay işleyicisi temsilcilerini kaydeder.

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object)

Zaman uyumsuz bir sayfa için başlangıç ve bitiş olay işleyicisi temsilcilerini kaydeder.

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler)

Zaman uyumsuz bir sayfa için durum bilgisi gerektirmeyen başlangıç ve bitiş olay işleyicisi temsilcilerini kaydeder.

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)

Parametreler

beginHandler
BeginEventHandler

Yöntemin BeginEventHandler temsilcisi.

endHandler
EndEventHandler

Yöntemin EndEventHandler temsilcisi.

Özel durumlar

<async> Page yönergesi olarak trueayarlanmadı.

-veya-

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) yöntemi olaydan sonra çağrılırPreRender.

Örnekler

Aşağıdaki kod örneği, yerel Web sunucusunun varsayılan sayfasının HTML kaynak kodunu bir denetimde görüntülemek için zaman uyumsuz bir TextBox istek kullanır.

Önemli

Bu örnekte, olası bir güvenlik tehdidi olan kullanıcı girişini kabul eden bir metin kutusu vardır. Varsayılan olarak, ASP.NET Web sayfaları kullanıcı girişinin betik veya HTML öğeleri içermediğini doğrular. Daha fazla bilgi için bkz . Betik Açıklarına Genel Bakış.

<%@ 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>

Açıklamalar

AddOnPreRenderCompleteAsync Zaman uyumsuz bir Web sayfasına işleyici eklemek için yöntemini kullanın.

Birden çok zaman uyumsuz işleyici kaydedebilirsiniz; ancak, aynı anda yalnızca bir işleyici çalışır. Birden çok zaman uyumsuz yöntemi aynı anda işlemek istiyorsanız, tek BeginEventHandler bir yöntem kullanmanız ve bu işleyiciden birden çok zaman uyumsuz işlem başlatmanız gerekir.

zaman uyumsuz işleyiciler ve PreRenderComplete olayları arasında PreRender çağrılır.

İlk olarak, tüm Page olaylar (olay aracılığıyla PreRender ) çalıştırılır ve ardından her kayıtlı BeginEventHandler yöntem çağrılır. İşleyici tamamlandığında ilgili EndEventHandler yöntem çağrılır. Birden çok zaman uyumsuz işleyici varsa, sonraki işleyici çağrılır.

Kayıtlı zaman uyumsuz olay işleyicileri çağrıldıktan sonra, olaydan başlayarak sayfa olaylarının geri kalanı çağrılır PreRenderComplete .

Ayrıca bkz.

Şunlara uygulanır

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler, Object)

Zaman uyumsuz bir sayfa için başlangıç ve bitiş olay işleyicisi temsilcilerini kaydeder.

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)

Parametreler

beginHandler
BeginEventHandler

Yöntemin BeginEventHandler temsilcisi.

endHandler
EndEventHandler

Yöntemin EndEventHandler temsilcisi.

state
Object

Olay işleyicileri için durum bilgilerini içeren bir nesne.

Özel durumlar

<async> Page yönergesi olarak trueayarlanmadı.

-veya-

AddOnPreRenderCompleteAsync(BeginEventHandler, EndEventHandler) yöntemi olaydan sonra çağrılırPreRender.

Örnekler

Aşağıdaki kod örneği, yerel Web sunucusunun varsayılan sayfasının HTML kaynak kodunu bir denetimde görüntülemek için zaman uyumsuz bir TextBox istek kullanır.

Önemli

Bu örnekte, olası bir güvenlik tehdidi olan kullanıcı girişini kabul eden bir metin kutusu vardır. Varsayılan olarak, ASP.NET Web sayfaları kullanıcı girişinin betik veya HTML öğeleri içermediğini doğrular. Daha fazla bilgi için bkz . Betik Açıklarına Genel Bakış.

<%@ 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>

Açıklamalar

AddOnPreRenderCompleteAsync Zaman uyumsuz bir Web sayfasına durum bilgisi gerektiren işleyiciler eklemek için yöntemini kullanın. parametresinde state geçirilen nesne, uygulamanızın ve endHandler parametrelerinde beginHandler belirtilen olay işleyici temsilcileri arasında bilgi aktarmak için gerektirdiği herhangi bir nesne olabilir.

Birden çok zaman uyumsuz işleyici kaydedebilirsiniz; ancak, aynı anda yalnızca bir işleyici çalışır. Birden çok zaman uyumsuz yöntemi aynı anda işlemek istiyorsanız, tek BeginEventHandler bir yöntem kullanmanız ve bu işleyiciden birden çok zaman uyumsuz işlem başlatmanız gerekir.

zaman uyumsuz işleyiciler ve PreRenderComplete olayları arasında PreRender çağrılır.

İlk olarak, tüm Page olaylar (olay aracılığıyla PreRender ) çalıştırılır ve ardından her kayıtlı BeginEventHandler yöntem çağrılır. İşleyici tamamlandığında ilgili EndEventHandler yöntem çağrılır. Birden çok zaman uyumsuz işleyici varsa, sonraki işleyici çağrılır.

Kayıtlı zaman uyumsuz olay işleyicileri çağrıldıktan sonra, olaydan başlayarak sayfa olaylarının geri kalanı çağrılır PreRenderComplete .

Şunlara uygulanır