Re: boost::thread
От: kzua  
Дата: 21.06.04 13:42
Оценка: -1
Здравствуйте, nervous, Вы писали:

N>Hi all.


N>Есть рабочий поток с вычислениями.

N>Есть модальное диалоговое окно для отображения прогресса.
N>Надо дать пользователю возможность прервать поток.
N>Как правильно это сделать?

Я смотрю тут у ребят мозги совсем затекли.
Вот самое простое, эффективное и верное решение.

BYTE nbDoCalc = 1;
HANDLE hThread; // = _beginthreadex
HWND hwndProgressBar;

void WorkThread()
{

while( nbDoCalc )
{
// Do Job
// SendMessage -> hwndProgressBar
...
};
};



MyDlgBox::OnStopCalc()
{
nbDoCalc = 1;

// ждем когда тред реально завершится
WaitForSingleObject( hThread, INFINITE );
};


Будет работать даже в многопроцессорном
окружении.


WBR, Alexei K.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.