vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

In diesem Forum haben Sie die Möglichkeit Kommentare, Fragen und Verbesserungsvorschläge zu den im vb@rchiv gelisteten Tipps und Workshops zu posten.

Hinweis:
Ein neues Thema kann immer nur über die jeweilige Tipps & Tricks bzw. Workshop Seite eröffnet werden!

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fragen zu Tipps & Tricks und Workshops im vb@rchiv
Tipp 1644: Threadsichere Gif-Animation II 
Autor: Nasenzwerg
 Tipp anzeigenDatum: 16.02.10 14:46

Hi,
das wäre ne nette Sache.
Aber bei mir tut sich gar nix.

Ich habe den Code in eine neue Klasse eingefügt und dann verwendet, aber nichts passiert

    Private Sub btnCopy_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles btnCopy.Click
        Dim oSource As String = tbSource.Text
        Dim oTarget As String = tbTarget.Text & "\" & _
          System.IO.Path.GetFileName(tbSource.Text)
        Dim Animation As New Animation
 
        PictureBox1.Visible = True
        PictureBox1.Refresh()
        Animation.Animation(PictureBox1, _
        New Bitmap(Application.StartupPath & "\mygif.gif"))
 
        'Bildchen anzeigen
        Try
            System.IO.File.Copy(oSource, oTarget, True)
        Catch ex As Exception
            MessageBox.Show("Fehler beim Kopieren!", "Fehler", _
              MessageBoxButtons.OK)
        End Try
        ' Nochmal die Animation aufrufen, damit sie wider gestoppt wird
        Animation.Animation(PictureBox1, Nothing)
        PictureBox1.Visible = False
    End Sub
Die Gif-Datei ist natürlich vorhanden, mit F8 kann ich durch die Klasse steppen, die wird also gefunden und verwendet. Aber das Bild bewegt sich beim Kopieren nicht.

Ich habe vb.net 2008 Express, aber das sollte wohl kein Problem sein.
Ciao
Klaus
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Threadsichere Gif-Animation II 
Autor: Zero-G.
Datum: 19.02.10 13:13

Hallo

Ist ja schon länger her...
Du solltest
       Try
            System.IO.File.Copy(oSource, oTarget, True)
        Catch ex As Exception
            MessageBox.Show("Fehler beim Kopieren!", "Fehler", _
              MessageBoxButtons.OK)
        End Try
in eine Backgroundworker Klasse verlegen / oder auch als eigenen Thread. - Das müsste funktionieren.
Wobei ich mir nicht sicher bin, ob System.IO.File.Copy Thread sicher ist oder nicht... - Musst mal schauen, ob es einen asynchronen aufruf dafür gibt. - Hab leider im Moment kein VB zur Hand.

mfg
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Threadsichere Gif-Animation II 
Autor: Nasenzwerg
Datum: 22.02.10 09:31

Hi,

es funktioniert zwar, aber:

Das Kopieren wird ausgeführt, ich habs mit
System.IO.File.Copy
als auch mit
My.Computer.FileSystem.CopyFile
getestet.
Aber: Der Kopierjob läuft dann (natürlich) komplett im Hintergrund ab, das Hauptprogramm ist dann sofort wieder bereit und kann sogar beendet werden, das Kopieren läuft weiter. Einerseits schön- andererseits schlecht: Ich habe im Hauptprogramm auch keine Rückmeldung mehr.

Um sowas zu verhindern, muss ich also in der Background-Sub sozusagen das Hauptprogramm kontrollieren:
Die Animation starten und stoppen (funktioniert),
Beenden des Programms verhindern indem der Exit-button vorher disabled wird, wird aber schwierig: Ich kann in dem Background-Thread _normalerweise_ keine Buttons wieder enablen.
Das muss ich- ums richtig zu machen- "threadsicher" machen. Dazu gibts ein Beispiel zu Textboxen. Wie das aber auf die enabled-Eigenschaft von Controls anzuwenden ist, ist mir unklar.
Oder ich mach das "thread-unsafe", indem ich CheckForIllegalCrossThreadCalls auf false setze. Was sicher nicht die feine Art ist, aber einfacher. Und es funktioniert. Also mach ich das erstmal unschönerweise einfach so
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Threadsichere Gif-Animation II 
Autor: Zero-G.
Datum: 22.02.10 10:28

Hey

Du musst die Datei ASyncron schreiben/lesen!

http://msdn.microsoft.com/en-us/library/kztecsys.aspx

mfg
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Threadsichere Gif-Animation II 
Autor: Nasenzwerg
Datum: 22.02.10 16:10

Ehrlich gesagt: Das erschlägt mich jetzt. Und ist für meinen kleine Copy-Zweck auch mit Kanonen auf Spatzen geschossen, da verzichte ich lieber auf die Animation beim Kopieren.

Und außerdem: Ich brauche wirklich einen Kopier-Vorgang, bei dem z.B. der Timestamp der Datei gleich bleibt. Mit Read&Write bekomme ich ja eine neue Datei.

Aber danke für die Tipps
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Threadsichere Gif-Animation II 
Autor: asam
Datum: 07.04.10 10:42

Hallo,

ich komme leider auch nicht wirklich weiter.
picWaitGif.Visible = True
Dim animation As New Animation
animation.Animation(picWaitGif, _
                    New Bitmap(Application.StartupPath & "\wait_ani.gif"))
 
'MsgBox("Einmal angehalten, dann geht's") ' weiß aber nicht warum
 
senden() ' zählt nur zum simulieren eines längeren Vorganges
 
'Dim post As New sendMail(dbsDataSource, tblFehler, "fhlKennung", selArray)
'Dim threadStart As New Threading.ThreadStart(AddressOf post.Senden)
'Dim thread As New Threading.Thread(threadStart)
'thread.Start()
 
animation.Animation(picWaitGif, Nothing)
picWaitGif.Visible = False
Scheinbar passiert erst einmal nichts. Erst wenn ich die MsgBox aktiviere kann ich sehen was passiert. Die Animation läuft, senden() rechnet (leider bleibt dabei die Animation stehen) und die Animation wird "ausgeschaltet". Ohne MsgBox ist die Animation nicht zu sehen.

Dann habe ich versucht die sub senden() in einen eigenen thread zu verpacken ... ohne MsgBox ist keine Animation zu sehen.

In meinem kleinen Programm könnte ich eine solche schöne Funktion an vielen Stellen gut gebrauchen. Möglicherweise fehlt mir nur die passende Idee wie ich das bei mir richtig zum Laufen bringe.

Für jede Hilfe dankbar.

Gru? asam

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um einen neuen Beitrag schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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