Compartir a través de


C28604

advertencia C28604: Evitar llamar a SendMessageTimeout con SMTO_ABORTIFHUNG con un tiempo de espera de 0

La herramienta Análisis de código notifica esta advertencia cuando las aplicaciones llaman a SendMessageTimeout con la marca SMTO_ABORTIFHUNG y un período de tiempo de espera de cero. El uso de SendMessageTimeout de esta manera puede ser problemático porque el período de tiempo de espera no tiene ningún efecto y la llamada se trata como una llamada de bloqueo.

Especifique un valor distinto de cero para el período de tiempo de espera.

Ejemplo

La siguiente llamada de función puede hacer que el proceso no responda indefinidamente.

fNeedsCallbackEvent = (0 != SendMessageTimeout(
_hwnd, 
WM_NULL, 
0,
0, 
SMTO_ABORTIFHUNG,
0,
&dwResult)); 

La siguiente llamada de función no tiene este problema.

fNeedsCallbackEvent = (0 != SendMessageTimeout(
_hwnd, 
WM_NULL, 
0,
0,
SMTO_ABORTIFHUNG,
1000,  
&dwResult));