vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2018
 
zurück
Rubrik: Verschiedenes / Sonstiges   |   VB-Versionen: VB2010 - VB201521.02.18
Was man bspw. mit dem Event 'Application_Idle' machen kann...

Im Tipp wird eine Möglichkeit zur Ausnutzung des Ereignisses Application_Idle vorgestellt.

Autor:   Dietrich HerrmannBewertung:     [ Jetzt bewerten ]Views:  1.997 
ohne HomepageSystem:  Vista, Win7, Win8, Win10kein Beispielprojekt 

Ich habe mal versucht, mein Programm, wenn es sozusagen auf dem Desktop dahin dämmert und nichts zu tun hat, einfach abzuschalten.

Dazu habe ich im Programm zwei Timer definiert:

Dim WithEvents halfTime As Timer ' die halbe Wartezeit
Dim WithEvents idleTimer As Timer ' die Wartezeit

Im Load-Ereignis der Startform initialisiere ich diese Timer:

idleTimer = New Timer() With {.Interval = 180000, .Enabled = True} ' 3 min
AddHandler Application.Idle, AddressOf Application_Idle
halfTime = New Timer() With {.Interval = idleTimer.Interval / 3, .Enabled = False}

Das bedeutet:
Die Gesamtwartezeit für idleTimer wird auf 3 Minuten eingestellt, d.h.: falls mein Programm 3 Minuten lang 'nichts zu tun' hat, soll was geschehen. Das wird weiter unten erläutert. Dann wird der Ereignis-Handler definiert als die Funktion 'Application_Idle', in der dei Aktion programmiert ist. Die halbe Wartezeit definiere ich, um nach Vergehen dieser schon mal eine vorhergehende Aktion auszuführen.

Hier jetzt das Ereignis für die halbe Wartezeit:

Private Sub halfTime_Tick(sender As Object, e As EventArgs) _
  Handles halfTime.Tick
 
  If WindowState <> FormWindowState.Minimized Then 
    WindowState = FormWindowState.Minimized
  End If
  halfTime.Enabled = False
End Sub

Wenn die halbe Idle-Time (Wartezeit) vergangen ist, wird erst mal das Fenster der Startform minimiert.

Ist die gesamte Idle-Time vergangen, also wurde mit dem Programm keine Bedien-Aktion mehr vorgenommen, wird die Funktion 'Application_Idle' ausgeführt:

Private Sub Application_Idle(ByVal sender As Object, ByVal e As EventArgs)
  With idleTimer
    .Stop()
    .Start()
    If WindowState <> FormWindowState.Minimized Then 
      halfTime.Enabled = True
    End If
  End With
End Sub

Der Code für den Timer idleTimer führt dann die endgültige Aktion aus:

' der Timer für das Idle-Verhalten
Private Sub idleTimer_Tick(sender As Object, e As EventArgs) _
  Handles idleTimer.Tick
 
  With idleTimer
    .Stop()
    .Dispose()
  End With
 
  RemoveHandler Application.Idle, AddressOf Application_Idle
  Close()
  Application.Exit()
End Sub

D.h.: Wenn die gesamte Idle-Time vergangen ist, wird die Application beendet.

Dieser Tipp wurde bereits 1.997 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2018 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel