Solved

Using Delegates for Cross-thread operations

Posted on 2008-10-13
2
492 Views
Last Modified: 2012-06-21
I need some help understanding the use of Delegates. I would like to have a listbox on the main form and be able to add to it from other threads. Below is some example code that I've been playing with but not very successfully. Can someone point out what I'm doing wrong? I keep getting "Cross-thread operation not valid". Thanks!
Public Class One

    Private Delegate Sub Logger(ByVal _message As String)

    Dim t As Threading.Thread

    Dim WithEvents oTwo As New Two
 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        t = New Threading.Thread(AddressOf oTwo.startCounting)

        t.Start()

    End Sub

    Private Sub updateList(ByVal entry As String)

        ListBox1.Items.Add(entry)

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        t.Abort()

    End Sub

    Sub ThreadLogging(ByVal entry As String) Handles oTwo.LogUpdated

        Invoke(New Logger(AddressOf updateList), entry)

        Dim writer As Logger

        writer = AddressOf updateList

        writer.Invoke(entry)

    End Sub

End Class
 

Public Class Two

    Public Event LogUpdated(ByVal entry As String)
 

    Public Sub startCounting()

        Dim count As Integer = 0

        While True

            WriteMonitorLog(count.ToString)

            count += 1

            Threading.Thread.Sleep(100)

        End While

    End Sub

    Private Sub WriteMonitorLog(ByVal entry As String)

        RaiseEvent LogUpdated(entry)

    End Sub

End Class

Open in new window

0
Comment
Question by:Tharo_Systems
2 Comments
 
LVL 13

Accepted Solution

by:
crazyman earned 500 total points
ID: 22703457
change this

Sub ThreadLogging(ByVal entry As String) Handles oTwo.LogUpdated
        Invoke(New Logger(AddressOf updateList), entry)
            End Sub
0
 

Author Comment

by:Tharo_Systems
ID: 22703501
I knew it had to be something simple! Thanks so much!
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Article by: jpaulino
XML Literals are a great way to handle XML files and the community doesn’t use it as much as it should.  An XML Literal is like a String (http://msdn.microsoft.com/en-us/library/system.string.aspx) Literal, only instead of starting and ending with w…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
With the power of JIRA, there's an unlimited number of ways you can customize it, use it and benefit from it. With that in mind, there's bound to be things that I wasn't able to cover in this course. With this summary we'll look at some places to go…
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

25 Experts available now in Live!

Get 1:1 Help Now