vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

VB.NET - Ein- und Umsteiger
Re: Threadübergreifendes Label 
Autor: Drapondur
Datum: 27.03.07 03:45

Hallo,

Weisst Du, dass es auch eine Timer-Componente für Windows-Forms gibt? Du scheinst den System.Timers.Timer zu verwenden. Würdest Du den Windows-Forms-Timer nehmen, hättest Du diese Probleme mit der Threadsynchronisierung nicht.
Ich schreibe, das nur für den Fall, dass Dir das nicht bekannt war.
Wenn Du trotzdem den System.Timers.Timer verwendest (wofür es ja gute Gründe geben kann), dann folgendes:

1. Ich nehme an, dass die Proc. Private Sub JensTimer(ByVal source As Object, ByVal e As ElapsedEventArgs) in einer Form (Form1?) sitzt und dass Public Sub LabelOpen() in der gleichen Form ist.

2. Mit Dim lab As New Form1 erzeugst Du eine neue Instanz der Form. Deswegen bekommst Du den Aufruf von LabelOpen nie zu Gesicht.

3. Du darfst nicht Invoke vom Delegaten aufrufen, sondern musst Invoke der Form verwenden und dieser Methode den Delegaten übergeben.

Es würde also so aussehen:
 Private Sub JensTimer(ByVal source As Object, ByVal e As ElapsedEventArgs)
   Dim labdel As New LabelDelegate(AddressOf Me.LabelOpen)
   Me.Invoke(labdel)
End Sub
4. Du brauchst eigentlich keinen neuen Delegaten wie LabelDelegate zu definieren, da durch die Deklaration des Elapsed-Events in der Timer-Klasse bereits ein Delegate vorliegt, der genau zu Deiner ereignisbehandelnden Methode JensTimer(ByVal source As Object, ByVal e As ElapsedEventArgs) passt. Du kannst es also so machen:
 Private Sub JensTimer(ByVal source As Object, ByVal e As ElapsedEventArgs)
    If Me.InvokeRequired Then
        Dim d As New System.Timers.ElapsedEventHandler(AddressOf JensTimer)
        Me.Invoke(d, source, e)
        Return
    End If
 
    Me.Label15.Text = "Jetzt klappt's"    
End Sub
Ciao
D.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Threadübergreifendes Label1.847Jens200726.03.07 22:05
Re: Threadübergreifendes Label1.506Drapondur27.03.07 03:45
Re: Threadübergreifendes Label1.387Jens200727.03.07 17:17

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 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