Вниз
Скачать: CL | DM;

BeginThread(), MessageBox() и грабли   Найти похожие ветки 

 
Sam Stone ©   (2006-12-11 20:52) [0]

Такая вот невеселая сказка: жила-была процедура, которая крутилась в потоке, делала свое черное дело и показывала юзеру процесс своей отработки. Но тут мерзким юзверям понадобилось задавать вопрос (в конкретном случае заменять или нет имеющиеся данные в БД новыми), и присобачил я мессаджбокс (который апишный) в поток (уклоняюсь от тухлых помидоров). Собсна вопрос: как избежать наступания на грабли в таком решении, т.к. времени в обрез и на глобальное изменение кода и дебаг его не хватит.


 
DrPass ©   (2006-12-12 00:04) [1]


> как избежать наступания на грабли в таком решении

А какие грабли ожидаются?


 
Sam Stone ©   (2006-12-12 12:59) [2]

Ну допустим сперва я вместо MessageBox вставил MessageDlg. В результате вылетало AV "Canvas does not allow drawing" (причем тут оно - знать не знаю, но вызывалось именно диалогом). Зависимости не было никакой, на всех компах в офисе работало ок. Потом в бредопоисках наткнулся в дебрях интернета, что апи потокобезопасен (достоверность этой инфы не гарантирую). Собсна интересует вопрос возможны ли грабли при вызове из потока MessageBox и если да, то как по другому запросить у пользователя нужную инфу? (запрашиваться должно неизвестное кол-во раз)


 
Leonid Troyanovsky ©   (2006-12-12 13:12) [3]


> Sam Stone ©   (12.12.06 12:59) [2]

>  Собсна интересует вопрос возможны ли грабли при вызове
> из потока MessageBox и если да, то как по другому запросить


Вызов MB, сам по себе, вполне безопасен.
Т.е., к иным опасностям он не причастен.

--
Regards, LVT.


 
tesseract ©   (2006-12-12 14:06) [4]


> Собсна интересует вопрос возможны ли грабли при вызове из
> потока MessageBox и если да, то как по другому запросить
> у пользователя нужную инфу? (запрашиваться должно неизвестное
> кол-во раз)


через Synchronize попробуй messageDlg вызвать.


 
DrPass ©   (2006-12-12 15:11) [5]


> через Synchronize попробуй messageDlg вызвать

Не стоит, ИМХО. Это остановит главный поток программы


 
Sam Stone ©   (2006-12-12 17:43) [6]

> [4] tesseract ©   (12.12.06 14:06)

а где Synchronize у BeginThread? Я сперва тоже решил его поискать, но ничего не нашел.


 
MetalFan ©   (2006-12-12 17:49) [7]

а зачем тебе BeginThread? чем  TThreаd не угодил?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
15-1165583652
Cash
2006-12-08 16:14
2006.12.31
Про: "... как решать задачи?"


6-1155102290
Nikus
2006-08-09 09:44
2006.12.31
WebSnap - нужен ликбез :)


15-1165323891
Экспериментатор
2006-12-05 16:04
2006.12.31
Жесткий диск в режиме PIO


15-1165939077
Cyrax
2006-12-12 18:57
2006.12.31
Как можно заюзать хидер, не пользуясь директивой #include ?


3-1161165801
Хельг
2006-10-18 14:03
2006.12.31
Connection failure на MS Sql Server 2005




   Наверх