Tengo una aplicación de escritorio que utiliza varios servicios web xml. Va muy bien, pero mientras se llama al servicio, el formulario queda bloquedao y hace cosas raras. ¿Se puede llamar a un servicio web en segundo plano?, es decir que el formulario siga funcionando mientras espera la respuesta del servicio web. Se que se puede hacer porque lo he visto en otras aplicaciones.
Lo que tu llamas en segundo plano, viene a ser una llamada asincrona. Es decir, que dedicas un hilo secundario a la llamada web, mientras que el hilo principal sigue atendiendo a la interacción del usuario con el formulario.
Para hacer una llamada asincrona a un servicio web, lo tienes muy facil porque el proxy que te crea en tu apliacion de escritorio ya incorpora una interface para llamadas asincronas.
Debes declarar el servicio web con eventos:
public withevents srv as new ElServicioWeb()
Cuando llames al ElMetodo del servicio, hazlo al metodo asincrono:
srv.ElMetodoAsync()
Deberas crear un handler para ser notificado de la finalización de la llamada al servicio:
private sub srv_ElMetodoCompleted(sender as object, e as ElMetodoCompletedEventArgs)
resultado = e.result ' Aqui capturas la respuesta del servicio web
End Sub
Para evitar eso usa Threads, si lo ves muy complicado create un dummy que realice esa llamada, de forma independiente (sé que es cutre, pero funcione igual de bien que un thread y un dummy es más sencillo de programar que un thread)
Si tienes dudas o no lo ves claro, te recomiendo el curso de Formularios y ADO en vídeo de www.videocursos.es, Allí lo explican paso a paso.
esto no deberia de ir en .NET por lo menos la respuesta si....