Hoje veremos como exibir para o usuário quais os passos que o programa faz durante um processo referente a regra de negocio.
A finalidade é mostrar o que esta sendo feito pois as vezes o program pode demorar um pouco para responder devido a um processo na maquina ou até um envio de e-mail.
Crie um novo WebApplication no visual Studio.
A finalidade é mostrar o que esta sendo feito pois as vezes o program pode demorar um pouco para responder devido a um processo na maquina ou até um envio de e-mail.
Crie um novo WebApplication no visual Studio.
Na pagina Default.aspx da aplicação vamos colocar alguns campos simples para simular um formulário.
Ex:
<style type="text/css">
.campo{padding:5px;
float:left;
}
</style>
<script language="javascript" type="text/javascript">
function RespostaServidor(ResultString) {
var result = document.getElementById("result");
result.innerHTML = ResultString;
}
function SalvarDados() {
var form = new GetForm()
PageMethods.Salvar(form, RespostaServidor);
PageMethods.EnviarEmail(RespostaServidor);
PageMethods.Concluir(RespostaServidor);
}
function GetForm() {
this.Nome = $get("txbNome").value;
this.Telefone = $get("txbTelefone").value;
this.Email = $get("txbEmail").value;
}
</script>
<div class="campo">
Nome
<input id="txbNome" type="text" />
</div>
<div class="campo">
Telefone
<input id="txbTelefone" type="text" />
</div>
<div class="campo">
E-mail
<input id="txbEmail" type="text" />
</div>
<div>
<input onclick="SalvarDados();" type="button" value="Salvar" />
<span id="result"></span>
</div>
A classe JavaScript "GetForm()" é um modelo para capturar os dados do formulário, e é recebida pelo C# no tipo "Dictionary<string,string>".
Criei um WebMethod para cada ação que será executada pelo servidor e as utilizei na função javascript "SalvarDados()" que por sua vez armazena a resposta do servidor em uma outra função "RespostaServidor(ResultString)" apresentando a resposta do webMethod na tag <span id="result"></span>.
Para simular o tempo de processo no servidor utilizei Thread.Sleep(3000);
Veja na listagem a baixo como ficaram os webMethods:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Threading;
using System.Web.Services;
namespace TesteAssincronoMetodos
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public string PublicRetorno(Dictionary form, string text)
{
switch (text)
{
case "Inicio" : text = "Salvando dados do usuário "+form["Nome"]; break;
case "Enviando Email...": text = "Enviando Email " + form["Email"] + "..."; Thread.Sleep(3000); break;
case "Concluido": Thread.Sleep(3000); break;
}
return text;
}
#region WebMethods
[WebMethod]
public static string Salvar(Dictionary jsForm)
{
Form_ = jsForm;
string msg = new TesteAssincronoMetodos._Default().PublicRetorno(jsForm,"Inicio");
return msg;
}
[WebMethod]
public static string EnviarEmail()
{
string msg = new TesteAssincronoMetodos._Default().PublicRetorno(Form_, "Enviando Email...");
return msg;
}
[WebMethod]
public static string Concluir()
{
string msg = new TesteAssincronoMetodos._Default().PublicRetorno(null,"Concluido");
return msg;
}
#endregion
public static Dictionary Form_ { get; set; }
}
}
É isso ai galera qualquer duvida ou sugestão basta entrar com contato.

Comments