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

Вниз

Борьба с "Подвисанием"   Найти похожие ветки 

 
Kazus   (2005-02-03 11:36) [0]

Хелло алл! Не подскажите что можно сделать чтобы программка не подвисала в момент набора номера модемом вот код дозвона:
 Inc(CurTry);Inc(CurDial);
 If CurTry<=MaxTry Then Begin
   Application.ProcessMessages;
   R:=DialToProvider(ComboBox1,ListBox1,hRas,CurDial);//Пока идет набор номера программа просто "Подвисает"
   If R=0 Then begin
     Timer1.Enabled:=False;
     ReadData;
   end else begin
     Timer1.Enabled:=True;
   end;
 end
 else begin
   Timer1.Enabled:=False;
   CurTry:=0;
 end;
А вот код функциии DialToProvider
Function  DialToProvider(Combo:TComboBox;LogList:TListBox;var hRas: ThRASConn; CurDial:Integer):Integer;
Var
 DialParams          : TRasDialParams;
 AEntryDial          : String;
Begin
 RasHangUp(hRas);
 With TiniFile.Create(extractfilepath(paramstr(0))+"global.ini") do begin
   If (Length(ReadString("Dial-Up","Phone"+IntToStr(CurDial),""))=0) or (CurDial>8) Then CurDial:=1;
   LogList.ItemIndex:=LogList.Items.Count-1;
   LogList.Update;
   AEntryDial:=Combo.Items.Strings[Combo.ItemIndex];
   LogList.Items.Add("..."+AEntryDial);
   LogList.Items.Add("...."+ReadString("Dial-Up","Phone"+IntToStr(CurDial),""));
   LogList.ItemIndex:=LogList.Items.Count-1;
   LogList.Update;
   hRas:=0;
   DialParams.dwSize:=Sizeof(TRasDialParams);
   StrPCopy(DialParams.szEntryName, AEntryDial);
   StrPCopy(DialParams.szUserName, ReadString("Dial-Up","UserName",""));
   StrPCopy(DialParams.szPassword, ReadString("Dial-Up","Password",""));
   StrPCopy(DialParams.szDomain, ReadString("Dial-Up","Domain",""));
   StrPCopy(DialParams.szPhoneNumber,ReadString("Dial-Up","Phone"+IntToStr(CurDial),""));
   Result:=RasDial(nil, nil, DialParams, 0, nil, hRAS);
 End;
End;


 
Digitman ©   (2005-02-03 11:41) [1]

выноси вызов RasDial() в доп.трэд


 
Diabolik ©   (2005-02-03 11:42) [2]

Попробуй процедуру в отдельный поток выделить...


 
Kazus   (2005-02-03 12:16) [3]

Через Thread? А может кто то нормальный пример привести если не сложно, а то в книге что то мало совсем ою этом написано.... понять сложно как и что в поток надо передать....


 
Kazus   (2005-02-03 12:27) [4]

Спасибо разобрался


 
Kazus   (2005-02-03 12:34) [5]

Сделал так...
beginthread(nil,1024,@SendDial,nil,0,RasThread);
и теперь дальнейшие инструкции идут не дожидаясь завершения работы соедиения... блин... как все таки сделать так, чтобы программа дождалась результата соединения и не подвисала в момент ожидания.... :-(


 
Kazus   (2005-02-03 12:46) [6]

Var
 R:Integer;
Begin
 Inc(CurTry);Inc(CurDial);
 If CurTry<=MaxTry Then Begin
   ListBox1.Items.Add("&#207;&#238;&#239;&#251;&#242;&#234;&#224; &#237;&#224;&#225;&#238;&#240;&#224; "+IntToStr(CurTry)+" &#232;&#231; "+IntToStr(MaxTry));
   R:=beginthread(nil,1024,@SendDial,nil,0,RasThread);
   while WaitforSingleObject(R,200)=WAIT_TIMEOUT do application.ProcessMessages;
   If DialResult=0 Then begin
     AddStringToListBox("&#196;&#238;&#231;&#226;&#238;&#237;&#232;&#235;&#232;&#241;&#252; &#243;&#241;&#239;&#229;&#248;&#237;&#238;...");
     Timer1.Enabled:=False;
     ReadData;
   end else begin
     AddStringToListBox(IntToStr(DialResult)+" &#206;&#248;&#232;&#225;&#234;&#224; &#239;&#240;&#232; &#237;&#224;&#225;&#238;&#240;&#229; &#237;&#238;&#236;&#229;&#240;&#224;...");
     Timer1.Enabled:=True;
   end;
 end
 else begin
   Timer1.Enabled:=False;
   CurTry:=0;
 end;
Вот код


 
Digitman ©   (2005-02-03 12:50) [7]

type

TDialThread = class(TThread)
protected
 procedure Execute; override;
end;

..

procedure TDialThread.Execute;
begin
..
 ReturnValue:=RasDial(..);
end;

..

DialThread := TDialThread.Create(..);
DialThread.WaitFor;
ShowMessage(IntToStr(DialThread.ReturnValue));
DialThread.Free;


 
Kazus   (2005-02-03 13:05) [8]

Да все уже разобрался! Thanks последний код вполне рабочим оказался!



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

Форум: "Основная";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.036 c
1-1107759093
Wood
2005-02-07 09:51
2005.02.20
Индикация процессов


6-1102247762
PZ
2004-12-05 14:56
2005.02.20
Как получить текстовый файл (.txt) из Internet


1-1107370563
GuAV
2005-02-02 21:56
2005.02.20
Исключение при создании формы.


1-1107467537
griban
2005-02-04 00:52
2005.02.20
Zapusk makrosa Excel iz Delphi


4-1104159113
n0name
2004-12-27 17:51
2005.02.20
Драйвер и обычный exe - в чём различия.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский