Re[2]: boost::thread
От: kzua  
Дата: 21.06.04 13:48
Оценка:
Здравствуйте, kzua, Вы писали:

K>Здравствуйте, nervous, Вы писали:


N>>Hi all.


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

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

K>Я смотрю тут у ребят мозги совсем затекли.

K>Вот самое простое, эффективное и верное решение.

K>BYTE nbDoCalc = 1;

K>HANDLE hThread; // = _beginthreadex
K>HWND hwndProgressBar;

K>void WorkThread()

K>{

K> while( nbDoCalc )

K> {
K> // Do Job
K> // SendMessage -> hwndProgressBar
K> ...
K> };
K>};



K>MyDlgBox::OnStopCalc()

K>{
K> nbDoCalc = 1;
^^^^^^^^^^^^^
nbDoCalc = 0;

K> // ждем когда тред реально завершится

K> WaitForSingleObject( hThread, INFINITE );
K>};


K>Будет работать даже в многопроцессорном

K>окружении.


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