So, I went back to some .NET programming and, using a new feature in VS.NET 2010, I discovered a case where I was trying to change a control from a thread that did not create this control and pointed me to an article on MSDN about how you do it right ...
' HOW TO WRITE TO A FORM CONTROL FROM A THREAD THAT DIDN'T CREATE THE CONTROL ' =========================================================================== ' Say you need to write to a UI text box that logs stuff... Delegate Sub WriteLogDelegate(ByVal [text] As String) Private Sub WriteLog(ByVal [text] As String) If Me.rtfLog.InvokeRequired Then ' We are not in the same thread! ' Create new WriteLogDelegate and invoke it on the same thread Dim d As New WriteLogDelegate(AddressOf WriteLog) Me.rtfLog.Invoke(d, New Object() {[text]}) Else ' We are totally in the same thread... ' Call AppendText like normal! Me.rtfLog.AppendText([text]) End If End Sub
And I was so excited because I was puzzled by how to do this for 5 years, because previous versions of vs .net did not mark this, since I was a minor in the project and ...
Umm ... I'm sorry that. Compensation restored. Anyway, now that I know this .NET-fu bit, I would like to know more about what is happening and how it works.
Where can I find the code for Invoke () in .NET Reflector?
source share