vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 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: Multithreading 
Autor: CodenameReese
Datum: 15.02.10 23:42

Sorry für den Doppelpost... hab hier aber noch ne andere "Lösung" (also funktionieren tut es immernoch nicht )
Beispielcode (auch wieder sehr lang):
Public Class Main
 
    Public Port As Integer
    Public PictureCount As Integer
    Public Pictures(0) As Picture
 
    Private ListenerClass As New Listener(Me)
 
    Private Delegate Sub PictureDlg(ByVal index As Integer, ByVal imgon As _
      Image, ByVal imgoff As Image)
 
    ' Erstellt das Picture Control
    ' Startet den Listener
 
    Public Sub PictureInvoke(ByVal index As Integer, ByVal imgon As Image, _
      ByVal imgoff As Image)
 
        If Pictures(index).InvokeRequired = True Then
            Pictures(index).Invoke(New PictureDlg(AddressOf PictureInvoke), New _
              Object() {index, imgon, imgoff})
        Else
            Pictures(index).Image = imgon
            Pictures(index).BackgroundImage = imgoff
            Pictures(index).Refresh()
        End If
 
    End Sub
 
End Class
 
Public Class Listener
 
    Private ListenThread As Thread
    Private Shared Stat As Boolean 
 
    Public Shared ReadOnly Property GeStat() As Boolean
        Get
            Return Stat
        End Get
    End Property
 
    Public Sub StartListener()
 
        Stat = True
 
        Listener = New UdpClient(Port)
        EndPoint = New IPEndPoint(IPAddress.Any, Port)
 
        For i1 = 0 To PictureCount
            Pictures(i1).StartThread()
        Next i1
 
        ListenThread = New Thread(AddressOf Listen)
        ListenThread.Start()
 
    End Sub
 
    Public Sub ExitListener()
 
        Stat = False
 
        Listener.Close()
 
        For i1 = 0 To PictureCount
            Pictures(i1).StopThread()
        Next i1
 
        ListenThread.Abort()
 
    End Sub
 
    Private Sub Listen()
 
    [...] 'Daten empfangen
    Received()
 
    End Sub
 
    Private Sub Received()
 
        For i1 = 0 To PictureCount
            Pictures(i1).Value = newData ' Wert wird übergeben
            Pictures(i1).Routine()
        Next i1
 
    End Sub
 
End Class
 
Public Class Picture
 
    Private PictureThread As Thread
    Private Val As Boolean
 
    Private Delegate Sub RoutineDlg()
 
    Private MainClass As Main
 
    Private ImgOn As Image
    Private ImgOff As Image
 
    Public Sub New(ByVal Owner As Form)
 
        MainClass = DirectCast(Owner, Main)
 
    End Sub
 
    Public Property Value() As Boolean
        Get
            Return Val
        End Get
        Set(ByVal value As Boolean)
            Val = value
        End Set
    End Property
 
    Public Sub StartThread()
        PictureThread = New Thread(AddressOf Routine)
        PictureThread.Start()
    End Sub
 
    Public Sub StopThread()
        PictureThread.Abort()
    End Sub
 
    Public Sub Routine()
 
        If Me.InvokeRequired = True Then
            Me.Invoke(New RoutineDlg(AddressOf Routine))
        Else
            If Me.Value = True Then
                MainClass.PictureInvoke(CInt(Me.Tag), ImgOn, Nothing)
            Else
                MainClass.PictureInvoke(CInt(Me.Tag), Nothing, ImgOff)
            End If
        End If
 
    End Sub
 
End Class
Nur das so, diese Routine des Picture Controls ja nicht in dem PictureThread ausgeführt wird... aber ich glaube das kommt meinem Ziel schon näher^^

MfG Reese
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Multithreading1.712CodenameReese15.02.10 22:54
Re: Multithreading1.004CodenameReese15.02.10 23:42
Re: Multithreading951ModeratorRalfE16.02.10 10:36
Re: Multithreading972CodenameReese16.02.10 11:06
Re: Multithreading1.033ModeratorRalfE16.02.10 11:58
Re: Multithreading915CodenameReese16.02.10 20:54
Re: Multithreading928CodenameReese17.02.10 11:24
Re: Multithreading946ModeratorFZelle17.02.10 12:36

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