Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.031 c
3-1095829971
RavenD
2004-09-22 09:12
2004.10.17
Почему двойной Last?


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


14-1095878044
Sheng
2004-09-22 22:34
2004.10.17
Любителям комьютерной 3d графики


1-1096953043
Phoenix
2004-10-05 09:10
2004.10.17
Проблема


8-1090586008
moor38
2004-07-23 16:33
2004.10.17
Как программно несколько WAV-файлов склеить в один?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский