In this article:
http://msdn.microsoft.com/en-us/library/ms171728(VS.80).aspx
The author uses the following method to make thread-safe calls to a Windows For
The shortest solution I have found is shown in the button example below where the goal is to change the text of a button.
if (buttonX.InvokeRequired) buttonX.Invoke((Action)(() => buttonX.Text = "Record")); else buttonX.Text = "Record";