So, I was getting back into some .NET programming, and through a new feature in VS.NET 2010, it detected a case where I was trying to modify a control from a thread that didn't create that control, and pointed me to an article on MSDN about how you do this correctly...
' 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 have been puzzled by how to do this for like 5 years because previous versions of vs.net didn't flag this since i was an undergrad on a project and...
Umm... Sorry bout that. Composure regained. Anyway, now that I know this bit of .NET-fu, I'd like to learn more about what's going on and how it works.
Where can I find the code for Invoke() in .NET Reflector?
Well, let name all thing that happening in your example.
Overall, the reflector can show you the implementation, but the idea you can find in article.
If you shure that you want to see the implementation, just compile some short code like in "code poet" answer, and look at him in Reflector.(I check this part, the reflector will show you something that pretty close your original code.)