CLR: .Net / Mono / Boo / Otros CLR > C#
Servicio Web Asincrono
(1/1)
mx_latino:
Tengo un Servicio Web ya creado y tambien eh creado ya una Windows Aplication en C# que consuma ese Web Service y todo funcuiona correctamente...
Lo que esto hace es resumida es coger datos de una base de datos de Sql y cargar en mi formulario, pero como simpre hay un cierto tiempo de espera hasta que cargue los datos en el Gridview, ahora los que intenresa es MOSTRAR UNA BARRA DE PROGRSO O ALGO QUE ME DIGA COMO ESTA LA CARGA DE DATOS... QUE ME MUESTRE EL ESTADO DE ESTAS OPERACIONES????
ALGUIEN SABE COMO????
mx_latino:
LO CONSEGUI!!! :kicking:
:comp:
Solo era cuestion de usar un control llamado backgroundWorker, y este maneja solo las llamadas asincronas..
ejemplo:
Se supone que ya Creamos un Web Service que nos devueve un Dataset con un conjunto de datos de una base de datos y ahora lo vamos a consumir desde un Windows Aplication
--- Código: Text --- //En el Load del formulario disparo el inicio del proceso y este llama al evento //DoWork del control backgroundWorker1 /*********************************************private void Form1_Load(object sender, EventArgs e) { this.backgroundWorker1.RunWorkerAsync(); }/********************************************* //Este evento nos sirve para se dispara al iniciar el proceso asincronoprivate void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { // Aqui invocamos al Web Service o cualquier cosa que queramos hacer localhost.Service lh= new localhost.Service(); //Decimos que el resultado de esto que para nuestro caso va a ser el Dataset que //nos devuelve el Servicio Web sera el retorno de nuestra operacion e.Result = lh.SacarDatos(); //Si queremos provocamos el Evento ProgressChanged del //control backgroundWorker que nos servira a su vez para cambiar o//actualizar los valores del pogressBar //Activar siguiente linea si se desea disparar evento ProgressChanged // backgroundWorker1.ReportProgress(X_valorPorcentual); } /********************************************* //Este metodo se dispara cuando se finaliza el proceso asincronoprivate void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { //Cargamos en una variable tipo Dataset el resultado DataSet ds = (DataSet)e.Result; //El Dataset asignamos al dataGridView this.dataGridView1.DataSource = ds.Tables[0].DefaultView; // La siguiente linea pone a progressBar1 como completado //this.progressBar1.Value = this.progressBar1.Maximum; } /********************************************* //Este evento se dispara solo si en el Evento DoWork se habilito//la linea " backgroundWorker1.ReportProgress(X_valorPorcentual); " private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) { //progressBar1.Value = e.ProgressPercentage; } /*********************************************
Y todo de maravilla!!!
:comp: Espero sirva... mxl_latino@hotmail.com
carlosjor:
gracias por el dato, pasó mucho tiempo de que escribiste esto pero me ayudó recién :lol:
Navegación
Ir a la versión completa