vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Grafik und Font   |   VB-Versionen: VB.NET06.06.07
Threadsichere Gif-Animation II

Eine threadsichere Gif Animation mit einem BackgroundWorker

Autor:   Harald BacikBewertung:     [ Jetzt bewerten ]Views:  12.454 
www.intelli-soft.atSystem:  WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Ich habe vor einiger Zeit eine Klasse geschrieben, die zeigt, wie man mit dem Aufruf von Thread eine Animation starten kann, so dass diese während einer Arbeit im Hintergrund läuft. Heute möchte ich euch den selben Tipp noch einmal näher bringen, diesmal aber mit der in .NET 2.0 enthaltenen BackgroundWorker Komponente.

#Region " GIF Animation in einer Picturebox "
Public Class Animation
  Private AniPictureBox As PictureBox
  Private AniImage As Bitmap
  ' In der Eigenschaft PBoxProperty wird die zu 
  ' verwendende PictureBox hinterlegt
  Private Property PBoxProperty() As PictureBox
    Get
      Return AniPictureBox
    End Get
    Set(ByVal value As PictureBox)
      AniPictureBox = value
    End Set
  End Property
  ' In der Eigenschaft Imapge Property wird die zu 
  ' verwendende Animation hinterlegt
  Private Property ImageProperty() As Bitmap
    Get
      Return AniImage
    End Get
    Set(ByVal value As Bitmap)
      AniImage = value
    End Set
  End Property
 
  Public Sub Animation(ByVal PBox As PictureBox, _
    ByVal AnimationImage As Bitmap)
 
    ' Die Zuweisung der Eigenschaften
    PBoxProperty = PBox
    ImageProperty = AnimationImage
 
    ' Einen neuen BackgroundWorker erstellen
    ' (Achtung: Erst ab .NET 2.0)
    Dim BackGroundW As New System.ComponentModel.BackgroundWorker
 
    ' Hier fragen wir ab, ob der BackgroundWorker schon 
    ' gestartet(wurde)
    If BackGroundW.IsBusy = False Then
      ' Die Zuweisung der DoWork Eigenschaft, dies muss man machen, 
      ' da wir den BackgroundWorker selbst definieren & nicht aus 
      ' der ToolBox ziehen
      AddHandler BackGroundW.DoWork, AddressOf bkgDoWork
      ' Den BackgroundWorker (die Animation) starten
      BackGroundW.RunWorkerAsync()
    Else
      ' Den Handler wieder löschen
      RemoveHandler BackGroundW.DoWork, AddressOf bkgDoWork
      ' Den BackgroundWorker (die Animation) beenden
      BackGroundW.CancelAsync()
      ' Den BackgroundWorker zerstören & aus dem Speicher löschen
      BackGroundW.Dispose()
    End If
  End Sub
 
  ' Hier wird der Code ausgeführt, der bei RunWorkerAsync 
  ' normalerweise auf die DoWork Prozedur verweist.
  Private Sub bkgDoWork(ByVal sender As System.Object, _
    ByVal e As System.ComponentModel.DoWorkEventArgs)
 
    ' Der PictureBox die Animation zuweisen
    PBoxProperty.Image = ImageProperty
  End Sub
End Class
#End Region

Um den Code jetzt auszuführen, bedarf es nur mehr den Aufruf:

Dim Animation As New Animation
Animation.Animation(PictureBox1, _
New Bitmap(Application.StartupPath & "\myAniGif.gif"))
 
' Hier wird der längere Code gemanaged
 
' ...
 
' Nochmal die Animation aufrufen, damit sie wider gestoppt wird
Animation.Animation(PictureBox1, Nothing)

So, viel Spaß damit, hoffe den einen oder anderen kann ich damit behilflich sein.
 

Dieser Tipp wurde bereits 12.454 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.

Aktuelle Diskussion anzeigen (6 Beiträge)

nach obenzurück


Anzeige

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

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-2024 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