tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
506
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    10110010 10110010 ist offline Mitglied Bronze
    Registriert seit
    Nov 2005
    Beiträge
    42
    Einen wunderschönen guten Tag meine lieben Freunde.

    Ich habe da ein Problem.
    Ich wollte einen Dienst schreiben der Dialoge darstellen kann.
    Allerdings hab ich erfahren das daß nicht geht.
    Nun hatte ich mir gedacht das ich den Dienst alleine halte und ein Programm schreibe das dan die DialogFormen enthällt.
    Sobalt eine Aktion in eines dieser Dialoge stattfindet soll im Dienst eine Variable von True auf False gesetzt werden!
    Wie stelle ich das an?
    Kann ich Variablen eines Dienstes von einem anderen Programm verändern oder muss ich das über umwege wie z.B. die Registrierung machen?

    Hintergrund ist das ich einen Dienst laufen habe der kontinuierlich prüft ob der Druckerspooler aktiv ist.
    Ist das der fall so soll er mit dem befehl "net stop spooler" gestopt werden.
    In der Taskleiste befindet sich ein NotifyIcon das anzeigt ob man drucken kann der nicht.
    Wenn man da mit der rechten Maustaste klickt erscheint ein Contextmenü womit man den Drucker wieder freigeben kann.
    Es wird nach einem Passwort gefragt.
    Ist dieses richtig soll der Dienst den befehl "net start spooler" ausführen.
    Im Dienst läuft ein Thread der jede Sekunde prüft ob die variable KillMe=true ist.
    genau das ist die die ich ändern will.

    Was währe ein eleganter und einfacher Weg?

    mfg ZeroOne
    Geändert von 10110010 (02.04.08 um 23:55 Uhr)
     

  2. #2
    Kyoko Kyoko ist offline Mitglied Gold
    Registriert seit
    Jun 2004
    Ort
    Wels (Oberösterreich) bzw. Mayrhofen (Tirol)
    Beiträge
    211
    Also, spontan fallen mir da jetzt 2 Möglichkeiten ein, wie das elegant gelöst werden könnte:

    1.) Du verwendest eine Datenbank, in die dein Program schreibt und von der der Dienst liest, um ihm mitzuteilen, was du willst

    oder

    2.) Du verwendest Remoting um auf die Objekte des Dienstes zuzugreiffen.

    lg
     

  3. #3
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Grundsätzlich gäbe es ja die Möglichkeit, dass der Dienst selbst eine Oberfläche hat, die aufgerufen werden kann (beispielsweise über NotifyIcon). Damit gibt's aber unter Vista Probleme und halte ich in deinem Fall auch nicht so sinnvoll.

    Was wäre mit einer kleinen Anwendung (in Autostart einbinden), welche permanent läuft, via NotifyIcon bedient werden kann, welches einfach den Druckerspooler abfragt und die entsprechenden Aktionen setzt? Wäre wesentlich weniger Aufwand. Die Notwendigkeit eines Dienstes sehe ich nicht unbedingt gegeben. Für diese kleine Aufgabe wäre es fast zuviel Overhead.
     

  4. #4
    10110010 10110010 ist offline Mitglied Bronze
    Registriert seit
    Nov 2005
    Beiträge
    42
    Hallo und erstmal vielen dank für die Antworten.

    Ich hatte das mal mit nem NotifyIcon probiert aber es lässt sich keine Form starten.
    egal was ich mache, selbst wenn ich eine Form als ShowDialog anzeigen lassen will.
    Aber ich lass das dann.

    Den Autostart würde ich ungerne verwenden da der zu schnell beeinflußt werden kann!
    Meineswissens wird ein Dienst nicht im Taskmanager angezeigt was ebenfals eine positive eigenschaft ist.

    Das mit der Datenbank ist ne gute möglichkeit.
    Wie funktioniert den die Remoting Methode?

    mfg ZeroOne
     

  5. #5
    Kyoko Kyoko ist offline Mitglied Gold
    Registriert seit
    Jun 2004
    Ort
    Wels (Oberösterreich) bzw. Mayrhofen (Tirol)
    Beiträge
    211
    Remoting ist eine Möglichkeit, Objekte programmüberfreifend zu verwenden.

    http://www.devtrain.de/artikel_679.aspx

    Lies dir das mal durch, dann sollt die klar sein was es ist und wie es funktioniert
     

  6. #6
    10110010 10110010 ist offline Mitglied Bronze
    Registriert seit
    Nov 2005
    Beiträge
    42
    Danke.

    Das mit dem Remoting ist genau das was ich gesucht hab.
    Das funktioniert klasse.
    Vielen vielen Dank.

    Ihr seid die besten!

    mfg ZeroOne
     

Ähnliche Themen

  1. OCX in dienst
    Von andi123456 im Forum .NET Archiv
    Antworten: 0
    Letzter Beitrag: 18.11.09, 12:18
  2. Antworten: 11
    Letzter Beitrag: 05.12.08, 14:31
  3. Dienst für Druckersteuerung
    Von martinpriebe im Forum .NET Application und Service Design
    Antworten: 0
    Letzter Beitrag: 10.07.07, 15:27
  4. Windows-Dienst über Try-Icon steuern (c#)
    Von BitMan im Forum .NET Windows Forms
    Antworten: 1
    Letzter Beitrag: 15.01.06, 17:20
  5. Dienst mit VB.NET
    Von hofchr im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 14.09.04, 22:32