Re[8]: ListView вешает программу
От: Wolodimir  
Дата: 03.06.11 21:01
Оценка:
Вариант с PostMessage оказался самым удобным и теперь код выглядит так:

Некоторый поток:
1. входим в критическую секцию
2. меняем данное (в базе)
3. покидаем критическую секцию
4. PostMessage( hMainWnd, WM_USER+1, DataId, 0);

Оконная процедура:
1. входим в критическую секцию
2. получаем данное (по идентификатору)
3. покидаем критическую секцию
4. записываем текст в ячейку

но ошибка не устранена. кажется, какая-то фигня с критическими секциями.
если приостановить программу, то поток останавливается в этом месте:
mlock.c -> void __cdecl _lock(int locknum)

при этом компилятор (VS2010) показывает сообщение "Процесс деактивирован. Все потоки завершены"



D>PS: Один из самых простых способов — PostMessage


D> Обновляющий поток (псевдо-код):


D> 1. получаем портянку данных

D> 2. входим в критическую секцию
D> 3. кладем данные в хранилище
D> 4. PostMessage(HandleГлавногоОкна, WM_USER + 1, 0, 0);
D> 5. выходим из критической секции

D> UI-поток (основное окно)


D> 1. ловим WM_USER + 1

D> 2. входим в критическую секцию
D> 3. обновляем
D> 4. выходим из критической секции
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.