Как это работает? Безопасность в одном потоке...
|
От: |
demidov2
|
|
Дата: | 22.02.07 11:40 |
|
Оценка: |
|
Привет! Происходит наслоение сообщений таймера. Вот грубый пример.
//окна выскакивают без остановки
void OnTimer()
{
MessageBox(hMainWnd, "Таймер. ", szCaption, MB_ICONERROR|MB_OK);
...
//окна тоже выскакивают без остановки. почему это не работает?
CRITICAL_SECTION ScanCS;
InitializeCriticalSection(&ScanCS);
void OnTimer()
{
EnterCriticalSection(&ScanCS);
MessageBox(hMainWnd, "Таймер. ", szCaption, MB_ICONERROR|MB_OK);
LeaveCriticalSection(&ScanCS);
...
//а это работает
bool Timer = false;
void OnTimer()
{
if (Timer)
return;
Timer = true;
MessageBox(hMainWnd, "Таймер. ", szCaption, MB_ICONERROR|MB_OK);
Timer = false;
...
Как решать эту проблему грамотно? Кто-нибудь, обьясните как работает система в этом случае. Она что, не ждет обработки сообщения?
Пока на собственное сообщение не было ответов, его можно удалить.