![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
BeginThread(), MessageBox() и грабли
Sam Stone © (2006-12-11 20:52:00)Такая вот невеселая сказка: жила-была процедура, которая крутилась в потоке, делала свое черное дело и показывала юзеру процесс своей отработки. Но тут мерзким юзверям понадобилось задавать вопрос (в конкретном случае заменять или нет имеющиеся данные в БД новыми), и присобачил я мессаджбокс (который апишный) в поток (уклоняюсь от тухлых помидоров). Собсна вопрос: как избежать наступания на грабли в таком решении, т.к. времени в обрез и на глобальное изменение кода и дебаг его не хватит.
MetalFan (2006-12-12 17:49:00) [1]а зачем тебе BeginThread? чем TThreаd не угодил?
Sam Stone (2006-12-12 17:43:00) [2]> [4] tesseract © (12.12.06 14:06)
а где Synchronize у BeginThread? Я сперва тоже решил его поискать, но ничего не нашел.
DrPass (2006-12-12 15:11:00) [3]
> через Synchronize попробуй messageDlg вызвать
Не стоит, ИМХО. Это остановит главный поток программы
tesseract (2006-12-12 14:06:00) [4]
> Собсна интересует вопрос возможны ли грабли при вызове из
> потока MessageBox и если да, то как по другому запросить
> у пользователя нужную инфу? (запрашиваться должно неизвестное
> кол-во раз)
через Synchronize попробуй messageDlg вызвать.
Leonid Troyanovsky (2006-12-12 13:12:00) [5]
> Sam Stone © (12.12.06 12:59) [2]
> Собсна интересует вопрос возможны ли грабли при вызове
> из потока MessageBox и если да, то как по другому запросить
Вызов MB, сам по себе, вполне безопасен.
Т.е., к иным опасностям он не причастен.
--
Regards, LVT.
Sam Stone (2006-12-12 12:59:00) [6]Ну допустим сперва я вместо MessageBox вставил MessageDlg. В результате вылетало AV "Canvas does not allow drawing" (причем тут оно - знать не знаю, но вызывалось именно диалогом). Зависимости не было никакой, на всех компах в офисе работало ок. Потом в бредопоисках наткнулся в дебрях интернета, что апи потокобезопасен (достоверность этой инфы не гарантирую). Собсна интересует вопрос возможны ли грабли при вызове из потока MessageBox и если да, то как по другому запросить у пользователя нужную инфу? (запрашиваться должно неизвестное кол-во раз)
DrPass (2006-12-12 00:04:00) [7]
> как избежать наступания на грабли в таком решении
А какие грабли ожидаются?