Programm als Windowsdienst (win7) speichern

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Programm als Windowsdienst (win7) speichern

    Hey Leute,
    Ich habe mir mit VB2010 einen E-Mail Client programmiert, der meine 10 Email-Adr. verwaltet.
    Ich benutze nur mein Programm und keinen Outlook oder andere Programme, da mich diese entweder optisch nicht Ansprechen oder ich ihnen schlicht und einfach nicht Vertraue (Stolz spielt auch etwas mit, da ich finde, dass das Programm mit gut gelungen ist :thumbup: )

    Das Erste was ich tue, wenn ich einen meiner Computer aufdrehe ist, meine E-Mails zu checken.
    Das Problem ist nur, es dauert rellativ lange bis das Programm alle Mails bekommen hat, deshalb habe ich es schon in meine Autostart hinzugefügt, nur spare ich mir nicht viel Zeit dadurch.

    Da die Windowsdienste beim Booten gestartet werden, wollte ich fragen ob sich das Programm auch als Windowsdienst speichern kann (Momentan speichert es sich wie gesagt von selbst im Autostart) ?(

    Danke schon mal im vorhinein :D
    Was soll es bringen das Programm so schnell wie möglich zu starten? Dadurch werden die Mails auch nicht früher abgeholt. Zumal haben Windowsdienste keine Oberfläche. Also was du dann überhaupt nur machen könntest, ein Dienst schreiben welcher die Mails holt und in eine Datenbank schreibt und dein Programm ließt dann die Mails nur aus dieser Datenbank raus, hat aber slebst keine Verbindung zum Internet.

    PS: u.a. ein Grund wieso ich lieber anständige Software nutze, die sind optimiert, meine 4 Mail Konten werden sehr fix abgerufen wenn ich mein System starte, da wir dein Code nicht kennen könnte durchaus dort das Problem liegen, weils einfach unsauber und schlecht Programmiert ist wie deine Mails abholst =)
    Ich habe auf einer Seite gelesen (weiß nicht mehr genau welche, wenn es jemand wirklich wissen will, kann ich nochmal danach suchen), dass wenn man ein Programm als Windowsdienst speichert, hat es wie du gesagt hast keine grafische Oberfläche, wird aber jedoch beim Starten (ausführen der exe) um einiges Schneller geladen.
    Und da mein Programm ständig nach neuen E-Mails sucht (ich weiß nicht performant, aber hat für mich einen Sinn) wäre es so optimal.

    Da ich viele E-Mails bekomme (wie gesagt 10 Accounts) wäre es relativ nett, wenn beim erzeugen des GUI schon alle bzw. viele der E-Mails schon lokal vorhanden wären.

    Wo liegt der Unterschied, ob mein Client die E-Mails vom Server holt und anzeigt oder ob ich einen Dienst schreiben muss, der die E-Mails holt und dann über eine DB an meinen Client gibt? Bei der 2. Variante hab ich dann nur 2 Threads laufen.
    Ja, du hast recht, mit früher.

    Aber ich meinte in meinem Sinne schneller, da ich weniger von der Ladezeit mitbekomme.

    ----------------------------------

    Ich muss doch eigentlich nur einen Regisrty-Key eintragen oder?
    Doch wo in der Registry sind die Keys der Systemdienste gespeichert ?(

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thomas95“ ()

    Es wurde schon alles gesagt.
    Ein Dienst hat keine Oberfläche.
    Wenn du das Laden der Mails im Dienst erledigst, musst du eine Schnittstelle von deinem Dienst zum Mailprogramm schaffen (z.B. eine DB).

    Ausserdem sparst du nur einmal beim Einschalten die 20 Sekunden, die ein moderner Rechner zum Hochfahren braucht.
    Im laufenden Betrieb dauert es genau so lange.
    Wenn du so viele Mails bekommst, dann lass den Rechner durchlaufen, dann sind die Mails schon alle da, wenn du die Maus in die Hand nimmst.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Das Projekt kannst du nicht als Dienst speichern.
    Aber du kannst deiner Solution ein Projekt der Sorte Windowsdienst hinzufügen, aus dem du im OnStart-Event deinen momentanen Code aufrufst.
    Der aufzurufende Code-Teil muss natürlich frei von GUI-Elementen, Konsolaufrufen und Messageboxen usw. sein.

    Wie du dem Dienst den notwendigen Installationsrahmen beibringst, ist hier beschrieben:
    codeguru.com/vb/gen/vb_system/…dows-Service-in-VBNET.htm
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --