InvokeRequired : Accessing Windows Controls thread safe in C#

InvokeRequired Property:
Gets a value indicating whether the caller must call an invoke method when making method calls to the control because the caller is on a different thread than the one the control was created on.

Access to Windows Forms controls is not inherently thread safe. If you have two or more threads manipulating the state of a control, it is possible to force the control into an inconsistent state. Other thread-related bugs are possible as well, including race conditions and deadlocks.

It is important to ensure that access to your controls is done in a thread-safe way.The .NET Framework helps you detect when you are accessing your controls in a manner that is not thread safe. When you are running your application in the debugger, and a thread other than the one which created a control attempts to call that control, the debugger raises an InvalidOperationExceptionwith the message, "Control control name accessed from a thread other than the thread it was created on.

Ref:
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.invokerequired.aspx

http://msdn.microsoft.com/en-us/library/ms171728(VS.80).aspx

http://weblogs.asp.net/justin_rogers/pages/126345.aspx