vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 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: 17.02.10 11:24

Okay nochmal Doppelpost... Sorry
Ähm es heist doch das der BackgroundWorker über das ProgressChanged- und das RunWorkerCompleted-Ereignis Zugriff auf den GUI-Thread hat oder? Weil wenn ich in dem ProgressChanged Ereignis einen Text eines Labels ändern will heist es wieder "Thread übergreifender Vorgang"^^
Beispiel:
Public Class Main
    Public Tests As New Test
    Private ListenerClass As New Listener
 
    Private Sub main_Load([...]) Handles MyBase.Load
        ListenerClass.StartListener
    End Sub
End Class
 
Public Class Listener
    Private ListenThread As Thread
 
    Public Sub StartListener()
        ListenThread = New Thread(AddressOf Listen)
        ListenThread.Start()
    End Sub
 
    Private Sub Listen()
    Received()
    End Sub
 
    Private Sub Received()
            Tests.CancelBW()
            Dim txt As String = Tests.Label
            txt = txt.Replace("%TEST%", CStr(Packet.Test))
            Tests.Label = txt
            Tests.StartBW()
    End Sub
End Class
 
Public Class Test
    Inherits Label
 
    Private TestBW As BackgroundWorker
    Private TestLabel As String
 
    Public Sub New()
        TestBW = New BackgroundWorker()
        TestBW.WorkerReportsProgress = True
        TestBW.WorkerSupportsCancellation = True
        AddHandler TestBW.DoWork, AddressOf DoWork_TestBW
        AddHandler TestBW.ProgressChanged, AddressOf ProgressChanged_TestBW
    End Sub
 
    Public Property Label() As String
        Get
            Return TestLabel 
        End Get
        Set(ByVal value As String)
            TestLabel  = value
        End Set
    End Property
 
    Public Sub StartBW()
        TestBW.RunWorkerAsync()
    End Sub
 
    Public Sub CancelBW()
        TestBW.CancelAsync()
    End Sub
 
    Private Sub DoWork_TestBW([...])
        If TestBW.CancellationPending = False Then
            TestBW.ReportProgress(100)
        Else : e.Cancel = True 'ByVal e As DoWorkEventArgs
        End If
    End Sub
 
    Private Sub ProgressChanged_TestBW([...])
        Me.Text = Me.Label 'Hier tritt der Fehler auf
    End Sub
End Class
Wieso kommt hier ein Fehler? Dürfte doch kein Problem sein dem "Label" einen Text zuzuweisen im GUIThread!? Bei einer "PictureBox" (auch geerbt, genauso wie hier) ist es auch kein Problem ein Image zuzuweisen!?

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: Multithreading952ModeratorRalfE16.02.10 10:36
Re: Multithreading973CodenameReese16.02.10 11:06
Re: Multithreading1.034ModeratorRalfE16.02.10 11:58
Re: Multithreading916CodenameReese16.02.10 20:54
Re: Multithreading929CodenameReese17.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