Solved

Using Delegates for Cross-thread operations

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

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Microsoft Reports are based on a report definition, which is an XML file that describes data and layout for the report, with a different extension. You can create a client-side report definition language (*.rdlc) file with Visual Studio, and build g…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

828 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