vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 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
Wohin kommt das invoke wenn man mit einer Klasse arbeiten will? 
Autor: Peter_nun_aber
Datum: 09.05.11 13:07

Hallo,

ich weiss, das Thema ist gefüllte ein Million mal besprochen worden, aber die Säge klemmt trotzdem.
Ich finde einfach kein passendes Beispiel mit separater Klasse.

Folgendes Konstrukt: Ein Form bekommt einen Button und ein Listview. Wird der Button gedrückt, wird eine Klasse aufgerufen, welche einen Timer beinhaltet. Tickt dieser, soll die Klasse der Form die Zeit des Tick zurückgeben, und im Listview anzeigen.

Das ist der Code von Form1:

 
Public Class Form1
 
    Delegate Sub AddListItem(ByVal myString As String)
    Public myDelegate As AddListItem
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
 
        Dim th As New cl_timer
        th.ks_Timer_start()
 
    End Sub
 
 
    Public Sub AddListItemMethod(ByVal myString As String)
        ListBox1.Items.Add(myString)
    End Sub
 
 
End Class
Die Klasse heißt cl_timer und ruft den Timer auf (nur im Beispiel ein String mit Datum als Rückgabe, im richtigen Leben passiert hier mehr, deswegen auch asynchron):

 
Public Class cl_timer
 
    Private WithEvents timer1 As New Timer
 
 
    Public Function ks_Timer_start()
        Try
 
            With timer1
                .Interval = 10000 'alle 10 Sek, da eine Sekunde = 1000
                .Start()
            End With
 
        Catch ex As Exception
            MsgBox(ex.ToString)
            Return Nothing
            Exit Function
        End Try
 
        Return Nothing
 
    End Function
 
    Private Function timer1_tick() Handles timer1.Tick
        Try
            Dim deleg1 As New System.Threading.ThreadStart(AddressOf _
              zeitliche_Ausführung)
            Dim threadDeleg1 As New System.Threading.Thread(deleg1)
 
            threadDeleg1.Start()
 
            Return Nothing
 
        Catch ex As Exception
            MsgBox(ex.ToString)
            Return Nothing
            Exit Function
        End Try
 
    End Function
 
    Private Function zeitliche_Ausführung()
        Try
 
            'hier weiss ich nicht weiter
 
            Return Date.Now
 
        Catch ex As Exception
            MsgBox(ex.ToString)
            Return Nothing
            Exit Function
        End Try
 
    End Function
 
End Class
Es gibt Lösungen in der Klasse über

 
 Private frm1 As Form1
    Public Sub New(ByVal myForm As Form1)
        frm1 = myForm
    End Sub 'New
aber das halte ich nicht für threadsicher, bzw. wird ja hier auch Form1 abgeleitet, also ein neues Object erzeugt.

So nun meine Frage, wohin in diesem Fall mit dem Invoke?

Danke für Eure Hilfe.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Wohin kommt das invoke wenn man mit einer Klasse arbeiten wi...3.503Peter_nun_aber09.05.11 13:07
Re: Wohin kommt das invoke wenn man mit einer Klasse arbeite...1.849ModeratorFZelle09.05.11 15:50
Re: Wohin kommt das invoke wenn man mit einer Klasse arbeite...1.820Peter_nun_aber09.05.11 17:08
Re: Wohin kommt das invoke wenn man mit einer Klasse arbeite...1.795ModeratorDaveS09.05.11 17:31
Re: Wohin kommt das invoke wenn man mit einer Klasse arbeite...1.798ModeratorFZelle09.05.11 20:15

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