Foros del Web » Programando para Internet » ASPX (.net) »

mostrar un contador de segundos transcurridos

Estas en el tema de mostrar un contador de segundos transcurridos en el foro de ASPX (.net) en Foros del Web. Hola gente estuve buscando como loco pero no encontré esto: Necesito que al clickar un boton que invoca un store procedure muy lento (digamos 10 ...
  #1 (permalink)  
Antiguo 11/07/2008, 14:51
 
Fecha de Ingreso: junio-2003
Ubicación: Carlos Paz - Cordoba
Mensajes: 91
Antigüedad: 20 años, 10 meses
Puntos: 0
mostrar un contador de segundos transcurridos

Hola gente estuve buscando como loco pero no encontré esto:

Necesito que al clickar un boton que invoca un store procedure muy lento (digamos 10 minutos) se muestre en un label "Tiempo transcurrido: n minutos" o sea que se actualice cada 60 segundos

pagina.aspx

Código:
<ajax:ScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeout="1200"/>

<asp:Timer ID="Timer1" Enabled="False" OnTick="UpdateLabel" runat="server" Interval="60000">
</asp:Timer>

<ajax:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="conditional">
        <Triggers>
            <ajax:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
        </Triggers>

            <ContentTemplate>
                <asp:Label ID="Label1" runat="server" Text="Panel created." /><br />
            </ContentTemplate>
</ajax:UpdatePanel>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
code Behind


Código:
   protected void Button1_Click(object sender, EventArgs e)
    {
        inicio = DateTime.Now;
        Timer1.Enabled = true;
        Timer1.DataBind();
        System.Threading.Thread.Sleep(180000);//3 minutos
        //recien cuando terminan los 3 minutos se actualiza la label

    }

    protected void UpdateLabel(object sender, EventArgs e)
    {
        System.TimeSpan diff = DateTime.Now.Subtract(inicio);
        Label1.Text = "Tiempo transcurrido: " + diff.Seconds.ToString();
        Label1.DataBind();

    }

Lo que quiero es que al presionar el boton Button1 se active el timer y se invoque al proceso largo, que estoy simulando con un sleep...lo que me está pasando es que se ejecuta el sleep pero no me muestra la label actualizada cada 60 segundos, sino que se ejecuta el sleep y no se actualiza la label a pesar de ejecutarse el evento "UpdateLabel".

Quizá deba hacerlo con un thread, por favor alguna ayuda, gracias
__________________
Daniel Schell
Promoviendo el Desarrollo Humano
www.elsenderodelmedio.com.ar
  #2 (permalink)  
Antiguo 11/07/2008, 17:33
Avatar de mdavila  
Fecha de Ingreso: julio-2007
Ubicación: Montevideo (Uruguay)
Mensajes: 919
Antigüedad: 16 años, 9 meses
Puntos: 13
Respuesta: mostrar un contador de segundos transcurridos

Vos lo dijiste.... Quizá deba hacerlo con un thread
Es lo correcto.
  #3 (permalink)  
Antiguo 11/07/2008, 17:44
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: mostrar un contador de segundos transcurridos

Pues lo q yo veo tu boton hace un request sincrono deberia estaar dentro de tu updatepanel no fuera de el.

y tu updatepanel con la opcion childsastriggers=true
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #4 (permalink)  
Antiguo 15/07/2008, 14:36
 
Fecha de Ingreso: junio-2003
Ubicación: Carlos Paz - Cordoba
Mensajes: 91
Antigüedad: 20 años, 10 meses
Puntos: 0
Respuesta: mostrar un contador de segundos transcurridos

Si alguien me puede mandar un sencillo ejemplo de lo que quiero hacer se agradecerá.

Saludos.-
__________________
Daniel Schell
Promoviendo el Desarrollo Humano
www.elsenderodelmedio.com.ar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:37.