AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Softwareentwicklung im Allgemeinen Projektplanung und -Management Wie kann man ein Programm im Hintergrund ablaufen lassen?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie kann man ein Programm im Hintergrund ablaufen lassen?

Ein Thema von Chemiker · begonnen am 3. Jun 2015 · letzter Beitrag vom 4. Jun 2015
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#1

Wie kann man ein Programm im Hintergrund ablaufen lassen?

  Alt 3. Jun 2015, 19:45
Hallo zusammen,

ein Programm soll im Hintergrund laufen und Daten von eine serielle Schnittstelle entgegennehmen. Die Daten sollen kurz geprüft und mit einem Zeitstempel versehen werden und dann zu einem Firebird-Server über ein Netzwerkverbindung geschickt werden.

Ich hatte zuerst an einer Konsolen Anwendung gedacht, aber für die serielle Schnittstelle muss ich Windows-Botschaften auswerten können was in einem Konsolen-Anwendung nicht geht.

Hat jemand von euch eine Idee wie man sowas am Sinnvollsten umsetzt?

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: Wie kann man ein Programm im Hintergrund ablaufen lassen?

  Alt 3. Jun 2015, 19:46
Mit einem Service, auch bekannt als Dienst?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: Wie kann man ein Programm im Hintergrund ablaufen lassen?

  Alt 3. Jun 2015, 20:11
Also das mit dem Dienst ist eine gute Idee, ich für mein Teil habe seit paar Wochen ein Programm die ganze Zeit laufen der bestimmte Informationen sammelt und speichert. Eigentlich so ähnlich wie bei dir, nur das ich es in einer normalen Logdatei speichere. Beim PC-Start wird auch das Programm gestartet, man sieht es nur im Taskmanager, es erledigt seinen Job und beendet sich beim herunterfahren.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#4

AW: Wie kann man ein Programm im Hintergrund ablaufen lassen?

  Alt 3. Jun 2015, 20:48
Man kann natürlich auch ein VCL-Programm ohne oder mit unsichtbarem Fenster laufen lassen (Ersteres ist nur ein bissl "gehackt"),
aber die Dienste/Services werden nicht umsonst öfters auch mal "Hintergrunddienst" genannt, weil sie halt im Hintergrund laufen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Wie kann man ein Programm im Hintergrund ablaufen lassen?

  Alt 3. Jun 2015, 21:59
Nur ein Dienst wird keine Windows Fensternachrichten empfangen können. Fensternachrichten sind an einen Desktop gebunden. Und ein Dienst läuft in einer anderen WindowsStation.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#6

AW: Wie kann man ein Programm im Hintergrund ablaufen lassen?

  Alt 3. Jun 2015, 22:04
Wenn ich das richtig verstanden hatte, gehören Fensternachrichten doch gar nicht zu den Anforderungen des TE:

"... im Hintergrund laufen und Daten von eine serielle Schnittstelle entgegennehmen. Die Daten sollen kurz geprüft und mit einem Zeitstempel versehen werden und dann zu einem Firebird-Server über ein Netzwerkverbindung geschickt ..."

Oder braucht man für den Empfang von Daten einer seriellen Schnittstelle Fensternachrichten?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: Wie kann man ein Programm im Hintergrund ablaufen lassen?

  Alt 3. Jun 2015, 22:12
Zweiter Absatz:
Zitat:
aber für die serielle Schnittstelle muss ich Windows-Botschaften auswerten können
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#8

AW: Wie kann man ein Programm im Hintergrund ablaufen lassen?

  Alt 3. Jun 2015, 23:01
Vermutlich innerhalb des Programms, da die Komponente wohl mit Messages arbeitet,
und eigene Nachrichten kann auch ein Service empfangen/verarbeiten.

Seine Konsolenanwendung hatte halt keine Messages verarbeitet, bzw. er hatte vergessen es da einzubauen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

AW: Wie kann man ein Programm im Hintergrund ablaufen lassen?

  Alt 3. Jun 2015, 23:11
und eigene Nachrichten kann auch ein Service empfangen/verarbeiten.
Da wäre ich jetzt interessiert wie das geht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#10

AW: Wie kann man ein Programm im Hintergrund ablaufen lassen?

  Alt 4. Jun 2015, 00:32
Also das mit der Konsolenanwendung sollte unser NonVCL-Experte aber doch selber wissen.

OK, einfaches Beispiel: Leg einen TTimer auf dein TService-Modul und erlebe, wie es seine WM_TIMER-Message verarbeitet.


Im Internen verwendet TService die Unit Vcl.Forms und dessen Messagebehandlung.
Im Hauptthread kann man daher auch Problemlos diese Unit einbinden und Vcl.Forms.Application.ProgressMessages benutzen.
Nicht über Vcl.SvcMgr.Application, aber wie man sieht, ist TService auch aus der VCL, obwohl ein Service ja "grundsätzlich" nicht visuell sein sollte.

Und hier die Message-Loop aus TServiceApplication.Run (Application.Run der Service-DPR):
Delphi-Quellcode:
while not Vcl.Forms.Application.Terminated do
try
  Vcl.Forms.Application.HandleMessage;
except
  on E: Exception do
    DoHandleException(E);
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 Uhr.
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