Título: Descargar archivo sin que se frize el form Publicado por: WHK en 4 Octubre 2011, 05:34 am Siempre he hecho aplicaciones en .net descargando archivos pero ahora necesito si o si que no se me frize el form mientras se descarga algo.
Normalmente cuando ejecutas request.GetResponse() en un objeto WebRequest el form se congela y cuando finaliza la respuesta del servidor ahi recién se descongela. Recuerdo hace años que en vb6 eso no pasaba, uno porque usabas control de usuarios para los sockets y todo era con subs en hilos de proceso y con inet tampoco se frizaba el form, simplemente la función no continuaba pero no comprometía el form. Como lo hago en .net? Por ahora hize un pequeño código: Código
Realmente puse ese zip como ejemplo pero en la práctica será un chat y no quiero que rapte el form mientras descarga las actualizaciones cada 4 segundos de un xml. También intenté con Código Me puse a leer de a 1024 bytes con un application.doevents() pero aun asi, igual se friza el form mientras hace las consultas. Título: Re: Descargar archivo sin que se frize el form Publicado por: Novlucker en 4 Octubre 2011, 14:08 pm Si lo único que necesitas hacer es eso, lo más sencillo es utilizar un Thread para lanzar el proceso de descarga en background.
Ahora, si lo quieres hacer del modo "correcto" y mostrar entre otras cosas el estado de la descarga, lo mejor es utilizar el método BeginGetResponse y el objeto IAsyncResult http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.begingetresponse.aspx Saludos Título: Re: Descargar archivo sin que se frize el form Publicado por: _katze_ en 4 Octubre 2011, 23:18 pm la respuesta de novlucker es buena! sino puedes cambiar por hacerlo con WebClient y de manera asincronica, asi no se te frisara el form ni nada y tiene varios eventos los cuales puedes usar para obtener la descarga y para el porcentaje! suerte
|