Bonsoir à tous
Est-Il utile de mettre un "IdAntiFreeze" dans un service Windows ?
Merci pour votre réponse. ;)
Version imprimable
Bonsoir à tous
Est-Il utile de mettre un "IdAntiFreeze" dans un service Windows ?
Merci pour votre réponse. ;)
:f1:
J'ai été faire un tour dans l'unité "IdAntiFreeze pas" pour voir un peu la source de ce composant, Pour moi j'en conclue que c'est un "Application.ProcessMessages" , donc je pense que l'IdAntiFreeze" na pas sa place dans un service Windows vue que je n'ai pas une application "VCL", ou je me trompe ? :cfou:
Code:
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
66
67
68 type TIdAntiFreeze = class(TIdAntiFreezeBase) public procedure Process; override; // This here and not the base class because it uses InMainThread, which is // not in DotNet right now. Can be moved back to base class and virtual // removed otherwise. class function ShouldUse: Boolean; override; end; implementation uses {$IFDEF LINUX} QForms, {$ENDIF} {$IFDEF MSWINDOWS} Forms, Messages, Windows, {$ENDIF} {$IFDEF DOTNET} Forms, {$ENDIF} IdGlobal; {$IFDEF LINUX} procedure TIdAntiFreeze.Process; begin //TODO: Handle ApplicationHasPriority Application.ProcessMessages; end; {$ENDIF} {$IFDEF MSWINDOWS} procedure TIdAntiFreeze.Process; var Msg: TMsg; begin if ApplicationHasPriority then begin Application.ProcessMessages; end else begin // This guarantees it will not ever call Application.Idle if PeekMessage(Msg, 0, 0, 0, PM_NOREMOVE) then begin Application.HandleMessage; end; end; end; {$ENDIF} {$IFDEF DOTNET} procedure TIdAntiFreeze.Process; begin //TODO: Handle ApplicationHasPriority Application.ProcessMessages; end; {$ENDIF} class function TIdAntiFreeze.ShouldUse: Boolean; begin // InMainThread - Only process if calling client is in the main thread Result := (GAntiFreeze <> nil) and InMainThread; if Result then begin Result := GAntiFreeze.Active; end; end; end.