Programación asíncrona

25/09/2003 - 16:30 por grbyte | Informe spam
Hola a todos,

Tengo un problema con una Aplicación Web. Esta Aplicación
Web hace una llamada a un Web Service (tarda unos
segundos) y mientras se hace esa llamada la pantalla se
me queda en blanco. Querría hacer que pusiese PROCESANDO
DATOS... o algo similar. Para ello tengo que saber cuando
tengo listos los datos y cómo sacar el mensaje.

Lo he probado con las llamadas asíncronas a Web Services
pero no he logrado nada que funcione.

Si alguien me puede pasar un código de algo parecido se
lo agradecería (o en su defecto alguna dirección donde
expongan un ejemplo de este tipo).

Antes de nada muchas gracias.
 

Leer las respuestas

#1 SqlRanger
26/09/2003 - 11:37 | Informe spam
No me parece sencillo el problema. De todas maneras te voy a proponer una
solución un poco enrevesada, la verdad es que no se me ha ocurrido nada
mejor.

La idea es: en vez de llamar directamente a la página que muestra la
información y llama al servicio web, llamémosla Datos.aspx, llamar a una
página Procesando.aspx. Esta página muesta al usuario el aviso "Procesando"
, tan bonito como quieras, con un gif animado o lo que sea. Dicha página
llama a la página Datos.aspx cuando termina de cargarse en el navegador
mediante JavaScript de cliente, . Como hasta que el navegador no empieza a
recibir HTML del servidor no borra el contenido de la página mostrada
anteriormente, obtenemos el efecto deseado. Normalmente la página Datos.aspx
requerirá que se le pasen parámetros, por ejemplo en una QueryString, así
que le pasamos a Datos.aspx la misma QueryString que ha recibido
Procesando.aspx. Más o menos el HTML de Procesando sería algo así

<HEAD>
<title>Procesando</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intell...">
<script language=javascript>
function OnPageLoad()
{
window.navigate("Datos.aspx<%= "?"&Page.Request.QueryString("Var") %>" );
}
</script>
</HEAD>

<body MS_POSITIONING="GridLayout" onload="OnPageLoad()">


En la página Datos.aspx ya no es necesario hacer llamadas asíncronas al
servicio web, a no ser que se pudieran hacer otras cosas al mismo tiempo
mientras se termina la llamada al servicio.



Saludos:

Jesús López
MVP Microsoft .NET
MCP SQL Server

Preguntas similares