Solved

Using Delegates for Cross-thread operations

Posted on 2008-10-13
2
493 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

Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

Question has a verified solution.

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

Suggested Solutions

Since .Net 2.0, Visual Basic has made it easy to create a splash screen and set it via the "Splash Screen" drop down in the Project Properties.  A splash screen set in this manner is automatically created, displayed and closed by the framework itsel…
Introduction As chip makers focus on adding processor cores over increasing clock speed, developers need to utilize the features of modern CPUs.  One of the ways we can do this is by implementing parallel algorithms in our software.   One recent…
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…

778 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