Главная страница
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.048 c
3-1095364159
3APA3A
2004-09-16 23:49
2004.10.17
ESDB - кто-нибудь пользовался?


1-1096559582
Никита
2004-09-30 19:53
2004.10.17
Ввод текста в Image


1-1096363145
msguns
2004-09-28 13:19
2004.10.17
Сообщение от одной форме другой


3-1095736353
jojo
2004-09-21 07:12
2004.10.17
Нужна помощь с запросом SQL


1-1096951262
TeNY
2004-10-05 08:41
2004.10.17
Как зная Hwnd получить сведения о типе окна,его имя,имя родителя