Программа запускает thread который тянет с SQL данные. Если с threadа изменять позицию ProgressBar то есть в Билдере thread-safe метод Syncronize. Но если Юзер дёргает окно, то thread ждёт.
Подскажите что-нибудь элегантное!
Дайте совет по работе с thread-ами
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
-------------
Лень - двигатель прогресса!
Лень - двигатель прогресса!
Неужели ни кто подобное не реализовывал?
Тогда так:
я имею переменную int в Thread-Classe, её родную инкрементирую. А в MainForm поставил Timer, он регулярно позицию ProgressBar-a опрашивает. Это tread-safe или нужно c CriticalSection работать?
Тогда так:
я имею переменную int в Thread-Classe, её родную инкрементирую. А в MainForm поставил Timer, он регулярно позицию ProgressBar-a опрашивает. Это tread-safe или нужно c CriticalSection работать?
-------------
Лень - двигатель прогресса!
Лень - двигатель прогресса!
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Если просто будешь опрашивать, то CriticalSection - это излишество. CriticalSectrion создана для совместного изменения разными зредами (процессами) одного и того же места в памяти.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
-
- Сообщения: 497
- Зарегистрирован: 17 фев 2004, 11:26
- Откуда: Ленинград (который Город на Неве)
- Контактная информация:
Можно и без Critical Section.alexx писал(а):Неужели ни кто подобное не реализовывал?
Тогда так:
я имею переменную int в Thread-Classe, её родную инкрементирую. А в MainForm поставил Timer, он регулярно позицию ProgressBar-a опрашивает. Это tread-safe или нужно c CriticalSection работать?
Можно определить в thread
Код: Выделить всё
CWnd *parent]
А потом
[code]
int CMyThread :: Run(...) {
for( .... ) {
do_something();
parent->PostMessage( WM_USER+1, 0, 0 );
};
};
Код: Выделить всё
HRESULT CMyWnd :: ProcessUserMessage( HPARAM .... ) {
m_progress->do_something()
};
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)
viel spass, DeeJayC
viel spass, DeeJayC
Спасибо! То что и надо было.
-------------
Лень - двигатель прогресса!
Лень - двигатель прогресса!