Ereignis in Stopwatch-While Schleife sofort erkennen

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ATcam.

    Ereignis in Stopwatch-While Schleife sofort erkennen

    Hallo,

    Ich würde die Sub "Check()" gerne alle 10 Sekunden ausführen, was auch funktioniert:

    VB.NET-Quellcode

    1. While True
    2. Uhr.Start()
    3. If Uhr.ElapsedMilliseconds > 10000 Then Check()
    4. Uhr.Reset()
    5. End If
    6. End While


    Allerdings soll gleichzeitig geprüft werden ob die Maus einen Klick auf ein Icon (genauer gesagt auf dessen einen NotifyIcon1.BalloonTipText) ausführt. Welches hier geprüft wird:

    VB.NET-Quellcode

    1. Private Sub NotifyIcon1_BalloonTip_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles NotifyIcon1.BalloonTipClicked
    2. Process.Start(Links(1))
    3. End Sub

    Funktioniert auch soweit, allerdings immer erst wenn die 10 Sekunden in der Stopwatch erreicht sind. Was ich gerne hätte, wäre, dass die "NotifyIcon1_BalloonTip_Click" direkt ausgeführt wird sobald der Klick erfolgte. Was muss ich tun/ändern?

    ATcam schrieb:

    Funktioniert auch soweit, allerdings immer erst wenn die 10 Sekunden in der Stopwatch erreicht sind.

    Das liegt an Deiner etwas verqueren Zeitmessung: Du belegst mit Deiner Endlos While-Schleife dauernd den GUI-Thread, so dass der Klick nicht verarbeitet werden kann.

    Nimm statt der While-Schleife + Stopwatch einen normalen Timer dessen Interval auf 10 Sekunden eingestellt ist und es sollte funktionieren.
    Willkommen im Forum. :thumbup:
    Außerdem läufst Du in einer Endlosschleife, weil Du keine Abbruchbedingung programmiert hast.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!