нужна тут многопоточность?
От: Dancer Россия  
Дата: 30.03.02 14:41
Оценка:
Ситуация такая: есть двумерный массив точек, значения элементов массива изменяются в цикле функцией Evaluate. Я хочу выводить этот массив на экран после КАЖДОЙ итерации цикла. Если я правильно понимаю, то просто вариант
for(int i = 0;i < m_numOfIterations;i++)
{
Evaluate();
InvalidateRect(CRect(10, 10, 650, 650), FALSE);
}
не работает по причине буферизации вывода => картинка не успевает отрисоваться до начала следующей итерации цикла.
Я попробовал делать в цикле такую вещь:
for(...)
{
Evaluate();
InvalidateRect(CRect(10, 10, 650, 650), FALSE);
::WaitForSingleObject(g_eventFinished, INFINITE);
}
а из OnPaint класса СDialog активировать g_eventFinished (с автосбросом) после того, как все отрисуется, но почему-то не выходит.
Каково стандартное разрешение этой ситуации? Обязательно ли заводить отдельный поток (перенести в него вычисления или рисовать в нем)?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.