<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<p style="margin-top:0;margin-bottom:0">Buenas Salvador,</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">Lo de los hilos es perfecto. Sencillo y muy útil.</p>
<p style="margin-top:0;margin-bottom:0">Para este caso lo necesito para descargar registros de una API y lo de la barra de progreso va a ser bastante útil también.</p>
<p style="margin-top:0;margin-bottom:0">Lo que haré será poner un bool en cada parámetro del WD_COMAND y crearé una función para gestionar todos los hilos según los bool estén a 0 o a 1.</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">Gracias otra vez ;D</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">Un saludo</p>
<div style="color: rgb(0, 0, 0);">
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>De:</b> Cconclase <cconclase-bounces@listas.conclase.net> en nombre de Salvador Pozo <salvador@conclase.net><br>
<b>Enviado:</b> domingo, 21 de octubre de 2018 17:06<br>
<b>Para:</b> cconclase@listas.conclase.net<br>
<b>Asunto:</b> Re: [C con Clase] Duda con winapi</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">El pasado 2018-10-21 12:56:59, ruben escribió:<br>
<br>
Hola:<br>
<br>
r> Estoy aprendiendo a usar winapi con el curso de cconclase y es realmente bueno.<br>
<br>
Gracias, me alegra saber que te gusta.<br>
<br>
r> Se me a presentado un problema que no tengo claro como gestionarlo. Estoy acostumbrado a programar en consola y cuando quieres hacer un bucle que tarde su tiempo, simplemente hay que esperar a que termine.<br>
r> El caso es que si activo un bucle con WM_COMAND, la aplicación se cuelga hasta que el bucle finalice.<br>
<br>
Las tareas de manipulación de mensajes, el procedimiento de ventana, deberían ejecutarse lo más rápidamente posible, precisamente para evitar que la aplicación se quede congelada durante mucho tiempo sin responder a las acciones del usuario.<br>
<br>
Cuando una tarea requiera un tiempo apreciable para completarse se debería asignar a un cuadro de diálogo o a un hilo (thread) paralelo, o a un conjunto de ambas cosas.<br>
<br>
Ejemplos de este tipo de tareas son las copias de archivos, descargas desde la red o instalación de aplicaciones.<br>
<br>
Ayuda mucho en estos casos mostrar barras de progresos y mensajes que den información para que el usuario sepa que las tareas se están llevando a término con normalidad (o que no, en caso de que haya algún problema).<br>
<br>
La respuesta a tu problema son los hilos. Puedes ver una primera aproximación en este enlace:<br>
<a href="http://articulos.conclase.net/?tema=juegos&art=threads&pag=000" id="LPlnk493792" class="OWAAutoLink" previewremoved="true">http://articulos.conclase.net/?tema=juegos&art=threads&pag=000</a>
<div id="LPBorder_GT_15401749497900.8703455237556468" style="margin-bottom: 20px; overflow: auto; width: 100%; text-indent: 0px;">
<table id="LPContainer_15401749497870.59440123923809" role="presentation" cellspacing="0" style="width: 90%; background-color: rgb(255, 255, 255); position: relative; overflow: auto; padding-top: 20px; padding-bottom: 20px; margin-top: 20px; border-top: 1px dotted rgb(200, 200, 200); border-bottom: 1px dotted rgb(200, 200, 200);">
<tbody>
<tr valign="top" style="border-spacing: 0px;">
<td id="TextCell_15401749497880.6666962627569974" colspan="2" style="vertical-align: top; position: relative; padding: 0px; display: table-cell;">
<div id="LPRemovePreviewContainer_15401749497880.3184793319930097"></div>
<div id="LPTitle_15401749497880.7020868181920272" style="top: 0px; color: rgb(0, 120, 215); font-weight: 400; font-size: 21px; font-family: wf_segoe-ui_light, "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; line-height: 21px;">
<a id="LPUrlAnchor_15401749497890.2948110080230204" href="http://articulos.conclase.net/?tema=juegos&art=threads&pag=000" target="_blank" style="text-decoration: none;">Artículos con Clase - Usar varios hilos en la programación ...</a></div>
<div id="LPMetadata_15401749497890.9847463533704943" style="margin: 10px 0px 16px; color: rgb(102, 102, 102); font-weight: 400; font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; font-size: 14px; line-height: 14px;">
articulos.conclase.net</div>
<div id="LPDescription_15401749497900.7526953163484713" style="display: block; color: rgb(102, 102, 102); font-weight: 400; font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; font-size: 14px; line-height: 20px; max-height: 100px; overflow: hidden;">
Lo primero que tenemos que tener en cuenta es que un hilo es un recurso. Cada vez que creemos un hilo, el sistema creará un manipulador al que irá asociado el hilo, pero también reservará otros recursos, como una pila, memoria, etc. Es responsabilidad nuestra
 liberar esos recursos cuando ya no los necesitemos.</div>
</td>
</tr>
</tbody>
</table>
</div>
<br>
<br>
<br>
Como los hilos pueden compartir memoria con el programa que los ha creado, es relativamente sencillo compartir información entre el procedimiento de ventana y los hilos, de modo que se pueda monitorizar el avance de las tareas realizadas por cada hilo.<br>
<br>
Espero que te sirva de ayuda, pregunta de nuevo si necesitas alguna aclaración. <br>
<br>
Hasta pronto.<br>
<br>
-- <br>
Salvador Pozo (Administrador)<br>
<a href="mailto:salvador@conclase.net" id="LPlnk920481" class="OWAAutoLink" previewremoved="true">mailto:salvador@conclase.net</a><br>
Blog con Clase: <a href="http://blogconclase.wordpress.com" id="LPlnk245731" class="OWAAutoLink" previewremoved="true">
http://blogconclase.wordpress.com</a><br>
Con Clase: <a href="http://conclase.net" id="LPlnk813608" class="OWAAutoLink" previewremoved="true">
http://conclase.net</a><br>
_______________________________________________<br>
Lista de correo Cconclase Cconclase@listas.conclase.net<br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" id="LPlnk929440" class="OWAAutoLink" previewremoved="true">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" id="LPlnk522579" class="OWAAutoLink" previewremoved="true">
http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</div>
</span></font></div>
</div>
</div>
</body>
</html>