Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.17;
Скачать: CL | DM;

Вниз

Thread - как остановить поток ?   Найти похожие ветки 

 
Amid   (2004-10-01 15:08) [0]

проблема с Thread-ом.
Сосдаю поток каторый загружает DLL, потом вызываю функцию (из DLL) которая соеденяется с сервером прилож. и ждёт сообщение. Как зделоть так чтобы этот поток закрылся если сообщение не пришло в течение 30 сек и написал в Мемо какоето сообщение ?


 
Семен Сорокин ©   (2004-10-01 15:17) [1]

GetTickCount или Now в начале ожидания, и в цикле сравнивать с предыдущим значением если больше 30 сек. - рубить цикл ожидания.


 
Digitman ©   (2004-10-01 15:26) [2]

с пом. какого компонента в доп.трэде осуществляется "соединение" с апп-сервером ?


 
Суслик ©   (2004-10-01 15:31) [3]


> с пом. какого компонента в доп.трэде осуществляется "соединение"
> с апп-сервером ?

да в общем то и как ожидание реализовно тоже не мешало бы знать.


 
Amid   (2004-10-01 15:39) [4]

Вот код програмы.
Програма на этот момент "@GetDocumentData:= GetProcAddress.." ждёт, где ставить этот цикл, как закрыть поток после 30 сек.

TGetDocumentData = function (.....);

Frid=Class(TThread)
    private
     GetDocumentData : TGetDocumentData;
                   V : Variant;
             passdll : THandle;
    protected
       procedure Execute; override;
End;

Function TForm1.LoadPassportDll: THandle;
Begin
 Result:= LoadLibrary("Passport2.dll");
 If (Result = 0) Then
  raise Exception.Create("Unable to load Passport2.dll");
End;

Procedure Frid.Execute;
Begin

passdll:= Form1.LoadPassportDll;

If (passdll <> 0) Then
 Begin{****}

     Try
     @GetDocumentData:= GetProcAddress(passdll,
                                       "GetDocumentData");
     Except on E : Exception do End;

     If (@GetDocumentData <> nil) then
      Begin{qwe}

           Try
           CoInitialize(nil);
           V:= GetDocumentData(Form1.EdUserName.Text,
                               Form1.EdPassword.Text);
           CoUninitialize;
           Except on E : Exception do End;

           Form1.laDateIn.Caption:= VarToStr(V[3]);
           Form1.laExpireDate.Caption:= VarToStr(V[4]);
           Form1.laHologram.Caption:= VarToStr(V[5]);
           ..................
           ..................

      End;{qwe}

 End;{*****}

End;{}


 
Семен Сорокин ©   (2004-10-01 15:46) [5]

наверное ожидание происходит в DLL в GetDocumentData, дык там и надо выставлять таймаут, передавай его параметром, а тут у тебя даже цикла нет.


 
Digitman ©   (2004-10-01 15:47) [6]

В приведенном коде

1. Нет ни единого упоминания о "сервере приложений" с т.з. терминологии и механизма Делфи ..  а есть упоминание о сервере автоматизации

2.
> Form1.laDateIn.Caption:=


начиная с этого места - до свидания ! ... вперед ! читать инф-цию о потоконебезопасности VCL до полного просветления !


 
Amid   (2004-10-01 16:04) [7]

1. Соединение с "сервером прилож." пресходит в DLL в GetDocumentData.

2. Этот DLL не я создал, и иходники тоже нету.

3. Подскажите пожалуста как можна приостоноить (закрыть) этот поток после .. сек, если он работает ?


 
Digitman ©   (2004-10-01 16:14) [8]


> 1. Соединение с "сервером прилож." пресходит в DLL в GetDocumentData.


принято к сведению


> 2. Этот DLL не я создал, и иходники тоже нету.


тогда твое дело - швах


> 3. Подскажите пожалуста как можна приостоноить (закрыть)
> этот поток после .. сек, если он работает ?


корректно, думаю - никак


 
Семен Сорокин ©   (2004-10-01 16:17) [9]


>
> > 3. Подскажите пожалуста как можна приостоноить (закрыть)
>
> > этот поток после .. сек, если он работает ?
>
>
> корректно, думаю - никак

а если некорректно - то запускать в потоке, только не все, а вызов этой функции и рубить поток, чревато незакрытыми ресурсами и иже сним.



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

Текущий архив: 2004.10.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.042 c
1-1096886095
strelok-47
2004-10-04 14:34
2004.10.17
Как создать OLE-объект в сонсольном приложении?


1-1095883102
Homa_Programer
2004-09-22 23:58
2004.10.17
delphi и Word


3-1095652006
korvin
2004-09-20 07:46
2004.10.17
Компонет печати или запрос?


4-1095093444
maxistent
2004-09-13 20:37
2004.10.17
Считывание памяти


1-1096487499
Justas
2004-09-29 23:51
2004.10.17
Bitmap из нескольких файлов