Сейчас на форуме: rmn, Magister Yoda, vasilevradislav, tyns777, zombi-vadim (+5 невидимых) |
eXeL@B —› Программирование —› Помогите разобраться с тридами в Delphi |
Посл.ответ | Сообщение |
|
Создано: 24 апреля 2008 09:29 · Личное сообщение · #1 Вроде все просто, но из функции пытаюсь вызвать трид в котором цепляюсь к удаленному реестру, а в теле основного процесса проверяю как прошел коннект (через глобальную переменную). Так вот проблема в том, что если машина к реестру которой я цепляюсь мертва, то трид зависает очень на долго и не дает вернуться в основной процесс. Вот код, которым пользуюсь: --------------------/-//-/-/-//-/-/---------------- MyThread = class(TThread) private { Private declarations } protected procedure THConnect; procedure Execute; override; end; --------------/-/-/-/-/-/-/----------------------- var NetForm: TNetForm; RConnected:boolean; r:Tregistry; GlobalNetName:string; T:MyThread; procedure MyThread.Execute; begin Synchronize(THConnect); //вызываем процедуру коннекта end; procedure MyThread.THConnect; begin RConnected:=false; RConnected:=r.RegistryConnect('\'+GlobalNetName); //GlobalNetName - имя тачки к которой стучимся end; ---------------------/-/-/-/-/-/-/-/------------- function IsDeployed(NetName:string):integer; var r_in,i:integer; reg, path, path1:string; begin GlobalNetName:=NetName; r:=TRegistry.Create; r.rootkey:=HKEY_LOCAL_MACHINE; T:=MyThread.Create(false); /// Создаем трид for i:=0 to 20 do ///по идее, сразу после его создания должны вернуться сюда, но насмерть зависаем, если машина мертва begin if RConnected=false then /// вот здесь проверяем состояние коннекта к удаленному реестру begin sleep(100); /// и если через 2 секунды не удалось подключиться, то вылим дальше... end else break; end; if RConnected=true then begin................и далее уже не интересно... ----- бессмысленные манипуляции не становятся более разумными если их повторять |
|
Создано: 24 апреля 2008 10:14 · Личное сообщение · #2 |
|
Создано: 24 апреля 2008 11:13 · Личное сообщение · #3 |
eXeL@B —› Программирование —› Помогите разобраться с тридами в Delphi |
Эта тема закрыта. Ответы больше не принимаются. |