Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Indy AntiFreeze in einem Dienst (https://www.delphipraxis.net/170092-indy-antifreeze-einem-dienst.html)

hesch21 30. Aug 2012 13:30


Indy AntiFreeze in einem Dienst
 
Hallo zusammen

schon wieder so was komisches. Hat schon jemand von Euch versucht, eine Indy (10) AntiFreeze-Komponente in einem Dienst zu verwenden? Also ich schaffe das nicht (mehr?). Sobald die Kompo auf dem Formular ist (egal ob Active := True oder False), fliegt mir das Programm beim Versuch vom .../INSTALL mit einer Fehlermeldung raus, ob ein Problembericht an Microsoft gesandt werden soll. Die eigentliche Fehlermeldung lautet, dass pro Applikation nur ein AntiFreeze erlaubt sei. Und das ist auch in der Hilfe bei Indy so zu finden. Aber ich habe ja GANZ SICHER nur ein AntiFreeze im Dienst. Ich habe sogar testeshalber alle anderen Applikationen abgeschossen, die ein AntiFreeze haben (könnten), das bringt alles nichts.
Andererseits bin ich aber der Meinung, das sei schon mal gelaufen, die Antifreeze-Kompo habe ich nicht neu in den Dienst eingebaut. Könnte es sein, dass da irgendwo irgendwie irgendetwas hängen bleibt, wenn man den Dienst deinstalliert?

Hat jemand eine Idee?

himitsu 30. Aug 2012 13:35

AW: Indy AntiFreeze in einem Dienst
 
Wieso hat dein Dienst ein Formular? (Wie wäre es mit einem DatenModul)
Interaktive Dinste sind sowieso out.

Nja, wie/wo wird dein Formular erstellt?
Und bist du sicher, daß es nur einmal erstellt wird?

s.h.a.r.k 30. Aug 2012 13:37

AW: Indy AntiFreeze in einem Dienst
 
Wozu brauch man in deinem Dienst ein AntiFreeze? Das brauchst doch nur, wenn eine GUI hast. Das Ding sorgt doch nur dafür, dass die GUI nicht wartet und somit nicht einfriert, oder irre ich mich da? :gruebel:

CCRDude 30. Aug 2012 14:17

AW: Indy AntiFreeze in einem Dienst
 
GUI = Hauptthread. Der Hauptthread eines Services sollte auch nicht hängen, sonst ärgert sich der Service Controller (etwa bem Starten/Stoppen von Diensten).

(edit sagt: ist nur eine Vermutung für die Verwendung, selber threaden sollte gerade in nem Dienst ja eigentlich nicht unüblich sein)

hesch21 30. Aug 2012 14:42

AW: Indy AntiFreeze in einem Dienst
 
Lieber himitsu

Logisch hat mein Dienst kein Form im Sinne eines interaktiven Dienstes. Der muss auch auf W-7 laufen. Aber wie nennt man denn das 'Objekt' auf dem man auch bei einem Dienst die Kompos platziert, wie beispielsweise eben die Indys oder die Timer? Sieht doch wirklich aus wie normalerweise die Forms.

Zu SHARK und CCRDude
also ich habe es eigentlich schon so wie CCRDude verstanden und möchte den AntiFreeze deshalb verwenden. Und Indy-Server-OnExecute-Events sind per Defintion schon mal Threads!

Aber interessieren würde mich ja, warum das nicht (mehr) geht mit dem AntiFreeze!

taveuni 30. Aug 2012 14:46

AW: Indy AntiFreeze in einem Dienst
 
Macht denn dieses Antifreeze?

Wenn dieser Event in einem separaten Thread läuft ist's ja o.k?
Ansonsten einfach Threads benutzen.

himitsu 30. Aug 2012 14:50

AW: Indy AntiFreeze in einem Dienst
 
Zitat:

Logisch hat mein Dienst kein Form im Sinne eines interaktiven Dienstes
Hmmmm, keine Ahnung, aber wie wäre es mit dem ServiceDatenHauptModul :stupid:

Nja, es kommt auch drauf an, was dieses AntiFreeze überhaupt macht.

Es kann sich ja an vielen Stellen was verändert haben.
- Delphi hat sich verändert
- die Indys haben sich auch verwender
- Windows hat sich verändert

Da kann es schon passieren, daß inzwischen etwas ein bissl anders reagiert.

taveuni 30. Aug 2012 14:53

AW: Indy AntiFreeze in einem Dienst
 
Also wenn es dieses Antifreeze ist machts ja nur Application.ProcessMessages :shock:

Jumpy 30. Aug 2012 15:37

AW: Indy AntiFreeze in einem Dienst
 
Also bei mir funzt das (delphi6 indy10). Ich hab per Zufall auch noch eine AntiFreeze Komponete auf meinem TService, da ich das Programm zuvor nicht als Dienst sondern normale Windows-Forms-Anwendung (mit meist unsichtbarem Form) hatte.

Ich würd mal die Uses aller deiner Units durchgucken, ob da noch iwo die IdAntiFreeze drin steht und die ggf. löschen. Auch die, die du eigentlich brauchst und diese dann nochmal neu auf die TService-Unterlage klatschen.

himitsu 30. Aug 2012 15:47

AW: Indy AntiFreeze in einem Dienst
 
Eingehende Daten kommen ja in eigenen Threads an und wenn etwas von den Clienten verlangt wird, dann kann man das ja im Anfragethread versenden.

Solange du also nicht im Hauptthread irgendwelche Daten versenden willst, wäre ja auch kein AntiFreeze nötig.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:33 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz