Zum Inhalt springen

C# Prozess oder Dienst schreiben


Loewchen0507

Empfohlene Beiträge

Hi Leute,

Ihr habt mir schon so oft geholfen, und darum nun meine bitte um ein bisschen brainstorming...

Ich bin momentan dabei herauszufinden wie man einen Dienst, einen Prozes oder ähnliches schreiben kann... Ich möchte nämlich das während das Programm oder der Dienst gestartet ist, dass innerhalb eines bestimmten zeitintervalls Daten verglichen und gegebenenfalls geändert werden.

So und nun seit Ihr dran...

Was würdet Ihr mir empfehlen?

Und könnt Ihr mir Informationsquellen nennen?

LG Loewchen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nun, da gibt es mehrere Möglichkeiten. Du kannst z.B. nen Timer einsetzen oder das Dateisystem auf Veränderungen überwachen. Dafür gibt es u.a. den FileSystemWatcher.

Es kommt halt drauf an welche Daten bzw. welche Änderungen Du überwachen möchtest. Der SQL - Server 2005 bringt dafür auch eigene Funktionen mit.

mfg

realgun

Link zu diesem Kommentar
Auf anderen Seiten teilen

prinzipiell möglich ist es, die JET-datenbank mit der MSSQL-datenbank auch via dienst anstelle eines standalone-programms anzugleichen. bedenke aber, dass nur eine eingeschränkte interaktion mit dem dienst möglich ist - so werden abfragen über ein GUI nicht direkt steuerbar sein. auch sollten z.b. JET-fehlermeldungen protokolliert werden, um ein debuggin des dienstes zu ermöglichen.

ich persönlich rate aus performance- und diagnosegründen davon ab, es sei denn, es handelt sich wirklich um unveränderliche abgleiche, die zu fixen zeiten laufen, und die nicht über die dafür vorgesehenen tool des SQL server machbar sind, z.b. die data transformation services oder eine stored procedure in T-SQL.

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Warum sollte der Dienst keine GUI haben können?

Aber du hast recht das es für das Problem sicherlich einfachere/bessere Ansätze gibt.

Aber dazu sollte etwas genauer beschrieben werden wann genau was passieren soll.

Prinzipell wäre aus möglich ein Programm per Taskplaner regelmäßig anzustoßen...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Warum sollte der Dienst keine GUI haben können?

es war so gemeint, als dass ein windows-systemdienst vorrangig dafür konzipiert ist, als hintergrundprozess und ohne die notwendigkeit eines angemeldeten benutzers zu arbeiten - die dienststeuerung selbst (start, stop, pause, continue, startart, impersonation, etc.) kann natürlich über eine GUI erfolgen.

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wow,

ok ich bruachte ein Weile um mich erst mal in die gaze Thematik einzulesen.

OK ich braucht mehr Informationen.

Grundlegendes:

Es geht um den Statischen abgelich zweier Tabellen. Die eine Tabelle ist eine SQL Tabelle die andere eine mdb. Es handelt sich dabei aber ausschließlich um die Backends zweier Programme. In dem einen Programm werden zu verschiedenen Kunden Produktionsdaten, Lohndaten etc... verwaltet. In dem anderen Programm werden ausschließlich Adressen und Ansprechpartner verwaltet. Beide Programme liegen auf einem Server. Es soll nun sichergestellt werden, dass wenn in dem Programm indem die Produktionsdaten etc. verwaltet werden, ein neuer Kunde bzw. eine neue Adresse angelegt wird, das diese dann automatisch in dem anderen Programm ebenfalls zu finden ist. Andersherum soll es auch möglich sein, dass wenn in dem Addressen und Ansprechpartnerverwaltungsprogramm eine neue Adresse eingetragen wird oder eine bestehende geändert wird, dass diese Änderungen auch in dem anderen Programm in den Stammdaten zur Verfügung gestellt werden.

Ich habe mir das dann so gedacht.

ein GUI benötige ich nicht wirklich. Ich benötige ausschließlich eine Konfigurationsdatei die eventuell geändert werden kann, damit ich die Verbindungsdaten zu den entsprechenden Datenbanken sichern kann und die Tabellennamen und Spaltennamen, damit eventuelle Änderungen durch eine Änderung in der Konfiguration möglich ist.

Daher habe ich gedacht es wäre schön, wenn ich einen Dienst habe der einmal in der Stunde die Datenabgleicht und für den ein GUI bereitgestellt werden kann indem die Konfigurationen vorgenommen werden können.

Wenns einfacher geht... ich bin für alles bereit... Es gibt noch keine Schnittstelle. Ich fange eh von vorne an, möchte aber die Sache gleich richtig angehen. Sie muss ausbaufähig bleiben, so dass jederzeit Änderungen gemacht werden können oder die Funktionalität erweitert werden kann.

So ich hoffe das reicht Euch an Informationen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

es war so gemeint, als dass ein windows-systemdienst vorrangig dafür konzipiert ist, als hintergrundprozess und ohne die notwendigkeit eines angemeldeten benutzers zu arbeiten - die dienststeuerung selbst (start, stop, pause, continue, startart, impersonation, etc.) kann natürlich über eine GUI erfolgen.

s'Amstel

der Dienst selber kann auch eine ganz normale GUI besitzen wie jedes andere Programm auch. Dazu muss man nur in den Dienstoptionen die Kommunikation mit dem Desktop aktivieren :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich habe jetzt erstmal gesehen, dass ich in Visual Studio 2005 wenn ich sage Projekt erstellen auch "Windows Dienst" zur Auswahl habe.

er erstellt mir dann das Projekt indem eine Service1.cs vorhanden ist. Er schreibt auch:

"Um Komponenten zu einer Klasse hinzuzufügen, ziehen Sie diese aus der Toolbox.... " etc...

ziehe ich nun aber einfach nur mal einen button dort hinein, dann schreibt er mir gleich haufenweise Fehlermeldungen. Erstelle ich die GUI dann mit einer einfach Form?

LG Loewchen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hm,

ich habe hier:

Exemplarische Vorgehensweise: Erstellen einer Windows-Dienstanwendung im Komponenten-Designer

eine Art Tutorial gefunden, wo man die ganze Sache einmal durcharbeiten kann... ich bin sogar richtig weit gekommen. Nur an der Stelle wo ich ein Setup Projekt für den Dienst erstellen soll... da komme ich nicht mehr weiter... Es steht geschrieben, dass ich mit einem Rechtsklick auf die Projektmappe (im Projektexplorer) auf Hinzufügen und dann Neues Projekt kllicken soll...

Ich habe aber unter Hinzufügen kein "Neues Projekt"... arbeite aber auch mit Visual Studio 2005.

Da habe ich mir gedacht, gut erstellst du das Projekt so und fügst es danach zur Projektmappe hinzu über hinzufügen - vorhandenes element... aber dort habe ich ebsowenig die möglichkeit ein projekt auszuwählen... wie kann ich denn nun ein SetupProjekt zu meinem WindowsDienstProjekt hinzufügen???

LG Loewchen

LG Loewchen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also das ist ja eine richtig coole Sache...

Ich habe jetzt einen Dienst, ich habe ein InstallShield für diesen Dienst, ich kann den Dienst starten und stoppen ich kann ihn auch wieder deinstallieren und ich bekomme einen eintrag in den Eventvwr wenn er gestartet und beendet wird... Echt Coole Sache...

Nun habe ich gelesen, dass ich mit dem System.Timers.Timer einen einfachen Abrufmechanismus einrichten kann. Damit werde ich mich dann heute Abend wohl mal beschäftigen.

Ich vermute, dass wenn ich eine Konfigurationsdatei haben möchte die über ein GUI gefüllt und verändert werdenkann, dass ich dass dann mit einer settings Datei machen kann und eine windows Form erstelle und diese Aufrufe wenn ich mich in OnStart befinde. Oder gibt es auch eine Möglichkeit dass ich einfach ein "Konfigurations-Programm" starten kann, also ein Programm das diese Konfigurationen für diesen Service macht per GUI?

Ist schon ein echt spanendes Thema. Finde ich. Für Euch wahrscheinlich schon Routine... :)

LG Loewchen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Leute,

nach dem ich ja solch ein großen erfolg hatte und die Spielereien alle geklappt haben wollte ich das bestehende Projekt umbenennen, aber irgendwie klappte das nicht. Na gut... dann habe ich mir gedacht, machst das ganze noch mal... habe mir wieder einen Dienst erstellt, einen Instaler dazu und ein Setup Projekt... alles wunderbar... nur als ich den Dienst installiert hatte und ihn starten wollte kam eine Fehlermeldung... Exception nicht abgefangen... und im Eventviewer war folgender Eintrag dazu zu sehen:

EventType clr20r3, P1 cowi-dienst.exe, P2 1.0.0.0, P3 46234022, P4 system, P5 2.0.0.0, P6 4333ae87, P7 3719, P8 115, P9 system.security.security, P10 NIL.

Weitere Informationen über die Hilfe- und Supportdienste erhalten Sie unter Events And Errors Message Center: Basic Search.

hat jemand eine Idee warum das ganze nicht funktioniert?

Ich habe noch keine Fehlerbehandlung mit eingebaut, aber es passiert ja auch noch nicht viel. Das einzige was ich mache ist, dass ich beim starten und stoppen einen Eintrag in den Eventviewer vornehme.

Hier der Code:


namespace CoWi_Dienst

{

    public partial class CoWi : ServiceBase

    {

        public CoWi()

        {

            InitializeComponent();

            if (!System.Diagnostics.EventLog.SourceExists("CoWiSource"))

            {

                System.Diagnostics.EventLog.CreateEventSource("CoWiSource", "CoWiLog");

            }

            EventLogCoWi.Source = "CoWiSource";

            EventLogCoWi.Log ="CoWiLog";

        }


        static void main()

        {

            System.ServiceProcess.ServiceBase[] ServicesToRun;

            ServicesToRun = new System.ServiceProcess.ServiceBase[] 

                                   {new CoWi()};

            System.ServiceProcess.ServiceBase.Run(ServicesToRun);

        }


        protected override void OnStart(string[] args)

        {

            EventLogCoWi.WriteEntry("CoWi gestartet");

        }


        protected override void OnContinue()

        {

            EventLogCoWi.WriteEntry("CoWi läuft");

        }


        protected override void OnStop()

        {

            EventLogCoWi.WriteEntry("CoWi gestoppt");

        }

    }

}
meckern tut er hier:
if (!System.Diagnostics.EventLog.SourceExists("CoWiSource"))

ich hoffe Ihr könnt mir helfen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 10 Monate später...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...