Usuário com melhor resposta
tempo de processamento enquanto processa uma tarefa

Pergunta
-
existe uma tela no sistema, que quando se clica no botão processar aparece uma mensagem de processando. gostaria de colocar o tempo que levar o processamento. igual no sql server. quando executa alguma query, na barra de status tem o tempo que está em execução.
Respostas
-
cara resolvido o problema. na verdade tem que ser assim:
ScriptManager.RegisterClientScriptBlock(Page, Page.GetType, "zz", "para();", True)
de qualquer forma obrigado pela ajuda.- Marcado como Resposta rafa-martin terça-feira, 19 de junho de 2012 22:54
Todas as Respostas
-
Stopwatch watch = new Stopwatch(); watch.Start(); //faz o processamento watch.Stop(); var tempo = watch.ElapsedMilliseconds;
ou
var inicio = DateTime.Now; //faz o processamento var fim = DateTime.Now; var tempo = (fim-inicio).Milliseconds;
http://www.linkedin.com/pub/murilo-kunze/44/191/455
- Editado Murilo Kunze terça-feira, 19 de junho de 2012 20:08
- Sugerido como Resposta Cleber H. Neves terça-feira, 19 de junho de 2012 20:13
-
murilo na verdade o que eu quero é que enquando estiver processando apareça na tela o tempo de processamento em tempo real. ou seja, enquanto estiver processando fique contando de segundo em segundo até o processamento terminar.
e não como vc passou. que só mostra o tempo de processamento quando terminar.
-
Huuuuum, então você terá que fazer com javascript.
Tenta assim:
var atualizador = setInterval(funcaoQueAtualizaUmTexto,1000); //vai começar a atualizar o texto
depois você usa
clearInterval(atualizador);//aqui vai parar de contar
http://www.linkedin.com/pub/murilo-kunze/44/191/455
- Editado Murilo Kunze terça-feira, 19 de junho de 2012 20:23
-
-
O Timer é server-side, para ter interação direta com a interface do usuário precisa ser como o Murilo te sugeriu ou com alguma biblioteca Ajax (jQuery)
Sendo que você não conhece javascript, veja isto como uma ótima oportunidade de aprender, mãos a massa!
Se tiver dúvidas de como implementar você pode postar aqui o seu código para com base nele receber a devida orientação.
É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"
Eduardo Pires
www.eduardopires.net.br
-
-
Se conheçe javascript basta criar uma função que mostra na tela um valor de tempo, setar o invervalo para a função e depois desativar o intervalo.
Por que tentar outra solução?
Se tiver dúvidas de como implementar você pode postar aqui o seu código para com base nele receber a devida orientação.
Caso tenha resolvido, marque a resposta de quem te forneceu a solução.
É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"
Eduardo Pires
www.eduardopires.net.br
-
senhores consegui fazer o javascript que funciona como se fosse um cronometro. porém, não estou conseguindo implementar isso no asp.net.
quando clicar no botão que tenho no meu form asp.net tem q disparar a função inicia. e quando processamento terminar o asp.net tem que chamar a função para.
como faço essa implementação? abaixo código:
<html> <head> <title>Cronometro</title> <script> function formatatempo(segs) { min = 0; hr = 0; /* if hr < 10 then hr = "0"&hr if min < 10 then min = "0"&min if segs < 10 then segs = "0"&segs */ while(segs>=60) { if (segs >=60) { segs = segs-60; min = min+1; } } while(min>=60) { if (min >=60) { min = min-60; hr = hr+1; } } if (hr < 10) {hr = "0"+hr} if (min < 10) {min = "0"+min} if (segs < 10) {segs = "0"+segs} fin = hr+":"+min+":"+segs return fin; } var segundos = 0; //inicio do cronometro function conta() { segundos++; document.getElementById("counter").innerHTML = formatatempo(segundos); } function inicia(){ interval = setInterval("conta();",1000); } function para(){ clearInterval(interval); } function zera(){ clearInterval(interval); segundos = 0; document.getElementById("counter").innerHTML = formatatempo(segundos); } </script> </head> <body> <span id="counter">00:00:00</span><br> <input type="button" value="Parar" onclick="para();"> <input type="button" value="Iniciar" onclick="inicia();"> <input type="button" value="Zerar" onclick="zera();"> </body> </html>
-
usei o evento onclientclick no botão para iniciar o tempo de execução. não usei antes, porque achei que poderia ocorrer algum conflito com o processamento.
só que quando terminar de processar preciso chamar a função que para o tempo. como chamo essa função no asp.net (codebehind)?
-
Page.ClientScript.RegisterClientScriptBlock(GetType(), "pararContador", "para();", true);
No inicia você deve passar uma função como parametro e não uma string com o nome da função.
http://www.linkedin.com/pub/murilo-kunze/44/191/455
- Editado Murilo Kunze terça-feira, 19 de junho de 2012 21:45
-
murilo, não está funcionando da forma que vc me passou. o meu botão está como autopostback = true e o webform está dentro de um updatepanel.
e no meu código existe um if. tipo:
if label.text > 0 then
'aconteceu erros durante o processamento
Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "pararContador", "para();", True)
end if
porém, não está funcionado. mesmo depois do processamento ter parado continua o "cronômetro" em execução. como paro ele?
-
-
-
-
cara a função para() é uma função já existente do javascript. eu só estou chamando a mesma. não estou usando nenhuma variável chamar interval em: Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "pararContador", "para();", True).
ainda continuo sem entender o q vc quer fazer.
de qualquer forma, coloquei o var interval, no começo da minha função para. porém, ainda não resolveu.
- Editado rafa-martin terça-feira, 19 de junho de 2012 22:31 rr
-
hehehe
deixa eu tentar explicar melhor..
No código que você mostrou, você não estava criando a variavel interval...
var interval; //declara ela function inicia(){ interval = setInterval(funcao,1000);// usa ela aqui } function parar(){ clearInterval(interval); //e usa ela aqui }
http://www.linkedin.com/pub/murilo-kunze/44/191/455
-
cara, como eu suspeitava não adiantou. veja:
function formatatempo(segs) { min = 0; hr = 0; /* if hr < 10 then hr = "0"&hr if min < 10 then min = "0"&min if segs < 10 then segs = "0"&segs */ while (segs >= 60) { if (segs >= 60) { segs = segs - 60; min = min + 1; } } while (min >= 60) { if (min >= 60) { min = min - 60; hr = hr + 1; } } if (hr < 10) { hr = "0" + hr } if (min < 10) { min = "0" + min } if (segs < 10) { segs = "0" + segs } fin = hr + ":" + min + ":" + segs return fin; } var segundos = 0; //inicio do cronometro var interval; function conta() { segundos++; document.getElementById("counter").innerHTML = formatatempo(segundos); } function inicia() { interval = setInterval("conta();", 1000); } function para() { clearInterval(interval); } function zera() { clearInterval(interval); segundos = 0; document.getElementById("counter").innerHTML = formatatempo(segundos); }
Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "pararContador", "para();", True)
não rola. usando o stopwatch, não como incrementar numa lebal, por exemplo, o tempo para ficar na tela?
-
cara resolvido o problema. na verdade tem que ser assim:
ScriptManager.RegisterClientScriptBlock(Page, Page.GetType, "zz", "para();", True)
de qualquer forma obrigado pela ajuda.- Marcado como Resposta rafa-martin terça-feira, 19 de junho de 2012 22:54