Bonjour à tous,
Est-ce que quelqu'un peut m'aider à implémenter un timeout dans mon appli,
plus précisement me dire :
- Qu'est-ce qu'il faut que j'ajoute ?
- Comment gérer ensuite le TimeOut ?
car je dois le faire dans une appli déjà existante, qui utilise des Threads
et qui crée dynamiquement les HTTP
Voici les bouts de codes que je peux publier, est-ce que cela vous suffit
pour me dire comment ajouter à chaque Http créée un timout dynamique,
c'est à dire qu'il se crée pour chaque TMyHTTP.
Merci à tous pour votre aide
Dans un autre fichier j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 // Initialisation procedure TCHild.InitHttpList(MAX_THREAD : Integer); var i : integer; Http : TMyHttp; Begin FHttpList.Clear; for i:=0 to MAX_THREAD-1 do begin Http:=TMyHttp.Create(Self); Http.Proxy :=Main.ProxyHostName; Http.ProxyPort :=Main.ProxyPort; Http.ProxyUsername :=Main.ProxyUserName; Http.ProxyPassword :=Main.ProxyPassword; Http.Username :=FSearch.UserAccount; Http.Password :=FSearch.UserPassword; Http.OnRequestDone :=HttpRequestDone; Http.OnDocData :=HttpDocData; Http.OnLocationChange :=HttpLocationChange; FHttpList.Add(Http) end; End;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 unit MyHttp_U; interface uses Classes, HttpProt, windows; const // Nombre maximum de changement d'url par le champs LOCATION // (Si infini mettre un nombre inferieur a 0) DEFAULT_RELOCATION = 3; type TMyHttp = class(THttpCli) private { Déclarations privées } FTrace: TStringList; FData: TObject; FRelocation: Integer; FOnLocationChange: TNotifyEvent; procedure DoLocationChange(Sender: TObject); protected { Déclarations protégées } property FollowRelocation; public { Déclarations publiques } constructor Create(AOwner: TComponent); override; destructor Destroy; override; published { Déclarations publiées } property Relocation: Integer read FRelocation write FRelocation default DEFAULT_RELOCATION; property OnLocationChange: TNotifyEvent read FOnLocationChange write FOnLocationChange; property Trace: TStringList read FTrace; property Data: TObject read FData write FData; end; implementation { TMyHttp } constructor TMyHttp.Create(AOwner: TComponent); begin inherited Create(AOwner); FollowRelocation:=False; FRelocation:=DEFAULT_RELOCATION; FTrace:=TStringList.Create; inherited OnLocationChange:=DoLocationChange; end; {* cons .Create *} destructor TMyHttp.Destroy; begin FTrace.Free; inherited Destroy; end; {* dest .Destroy *} procedure TMyHttp.DoLocationChange(Sender: TObject); begin FTrace.Add(inherited Location); if (Relocation=0) or (Relocation>0) and (Trace.Count>Relocation) then Abort; if Assigned(FOnLocationChange) then FOnLocationChange(Sender); end; {* proc .DoLocationChange *} end.
Partager