Ver Mensaje Individual
  #8 (permalink)  
Antiguo 23/01/2015, 06:28
lareto
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Mantener el programa siempre en ejecucion

Cita:
Iniciado por HackmanC Ver Mensaje
Hola,
No sé específicamente a que te refieres con while(true) .. pero desde mi punto de vista es lo peor que puedes hacer en una aplicación, en el lenguaje que sea, para hacer lo que sea, a menos que haya un break o un salto de control por otro medio, y no se quede bloqueado todo el sistema.
Saludos,
Lo que decía, y sostengo, es que while(true) es una formal normal, habitual, de mantener un proceso activo a la espera de un evento; por ejemplo... en
https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx
hay un ejemplo casi completo de lo mismo que se pregunta, donde se procesa la cola de mensajes con un ciclo while infinito (infinito, claro está, hasta el momento en que deja de serlo; en este caso, por la llegada de WM_QUIT).

donde dice:
Código C++:
Ver original
  1. while( (retVal = GetMessage(&msg, NULL, 0, 0)) != 0 )
  2. {
  3.     if ( retVal == -1 )
  4.     {
  5.         ErrorHandler(TEXT("GetMessage"));
  6.         break;
  7.     }
  8.     else
  9.     {
  10.         TranslateMessage(&msg);
  11.         DispatchMessage(&msg);
  12.     }
  13. }

podría, también, haber puesto un equivalente:
Código C++:
Ver original
  1. while(true)
  2. {
  3.     retVal = GetMessage(&msg, NULL, 0, 0);
  4.    
  5.     if(retVal == 0)
  6.     {
  7.         break;
  8.     }
  9.     else if ( retVal == -1 )
  10.     {
  11.         ErrorHandler(TEXT("GetMessage"));
  12.         break;
  13.     }
  14.     else
  15.     {
  16.         TranslateMessage(&msg);
  17.         DispatchMessage(&msg);
  18.     }
  19. }

Y no sé si es lo mejor que puede hacerse, pero seguramente no es lo peor; al menos yo puedo pensar en cosas peores sin mucho esfuerzo.