Поделиться через


C28604

Предупреждение C28604: избегайте вызова SendMessageTimeout с SMTO_ABORTIFHUNG со временем ожидания 0

Средство анализа кода выводит это предупреждение, когда приложения вызывают SendMessageTimeout с флагом SMTO_ABORTIFHUNG и периодом времени ожидания, равным нулю. Использовать SendMessageTimeout таким образом может быть проблематично, так как время ожидания не влияет, а вызов обрабатывается как блокирующий вызов.

Укажите ненулевое значение для периода ожидания.

Пример

Следующий вызов функции может привести к тому, что процесс не будет отвечать бесконечно.

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

Следующий вызов функции не имеет этой проблемы.

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