Programm endet zu früh

Freaky_09

Mitglied
Hallo!

Hab wieder mal ein Problem mit VB ;)

Hab jetzt ein Programm geschrieben das kontrolliert ob ein bestimmter Prozess am Rechner läuft. Wenn ja schließt sich das Programm ohne das etwas passiert.
Wenn der Prozess nicht läuft dann erzeugt das Programm ein NotifyIcon.

Jetzt weiß ich nur leider nicht wie man die Anzeigedauer des NotifyIcons bestimmt.
Denn das NotifyIcon wird bei meinem Programm nur ganz kurz angezeigt und dann beendet sich das Programm.

Kann mir jemand erklären was ich da falsch gemacht bzw. vergessen habe?

Grüße
 
Hi!

Was für eine Art von Anwendung ist das? Ein WindowsForms- oder eine Consolen-Anwendung?

Bei einer Consolen-Anwendung, hast keinen ApplicationContext zur Verfügung,
der in einem sich permanent laufenden Thread befindet ( wird bei'm nichts tuen einfach suspendet ).
Daher beendet sich die Anwendung nach dem ausführen aller Routinen.

Wenn es eine WindowsForms-Anwendung ist, musst anscheinend irgend etwas machen,
damit sich das Programm beendet.
 
Könntest Du mir bitte mal auf meine Frage antworten. :)
Ich sehe mich sonst nicht im Stande, Dir eine geziehlte Antwort geben zu können.

Wenn das Program eine Consolen-Anwendung ist, wird die Main Methode einfach abgearbeitet
und das Program beendet sich.

Aber sag mit doch mal was Du da vor Dir hast.
 
Aja, sorry (es ist halt doch noch Montag ;) )
Ist eine WindowsForms - Anwendung.

Ich habe eine Sub Main eingebaut die beim Starten als 1. aufgerufen wird. Als erstes wird dabei die Abfrage für den Prozess gemacht und wenn benötigt dann das Form angezeigt (hab das Form auf Hide() eingestellt damit es nicht sofort sichtbar wird).
 
So in Kurzform sieht mein Programm aus:

Code:
Class Form1
//Form-Designer: Typische Initialisierung von Form + NotifyIcon1

Public Shared Sub Main()
   If prop.IsProcessRunning(strServer, strProcess) = True Then //überprüfen auf Prozess
       form.Close()
   Else
       Me.Activate()
       Me.NotifyIcon1.Visible = True
   End If
End Sub

End Class

Nachdem End Sub erreicht ist schließt sich das komplette Programm und das NotifyIcon verschwindet. Muss da wohl was vergessen haben!?
 
Wie's halt meistens so läuft kommt man beim Fragen dann selber drauf *gg*

Das Problem war das Shared Sub Main().
Starte das Programm jetzt wie jede übliche WindowsForm und unter Form1_Load() rufe ich die Main-Methode auf. Wichtig ist dabei das man das Shared weg lässt.

Danke fürs Weiterhelfen und auf die richtigen Gedanken bringen ;)!
 
Versteh ich jetzt ehrlich gesagt nicht. *g*
Führst kein Application.Run() aus? Oder hast igrend wo anders noch eine Methode namens Main definiert?
Ist ja auch egal, hauptsache es geht jetzt. :)
 
Starte die .exe welche beim Form1_Load meine Main-Methode aufruft.
Is wahrscheinlich etwas umständlich und gibt sicher bessere Lösungen, aber es funktioniert ;)
 
Zurück