http://www.codeproject.com/Articles/10311/What-s-up-with-BeginInvoke
http://www.codeproject.com/Articles/37642/Avoiding-InvokeRequired
static class ControlExtensions { static public void UIThread(this Control control, Action code) { if (control.InvokeRequired) { control.BeginInvoke(code); return; } code.Invoke(); } static public void UIThreadInvoke(this Control control, Action code) { if (control.InvokeRequired) { control.Invoke(code); return; } code.Invoke(); } }
http://stackoverflow.com/questions/1167771/methodinvoker-vs-action-for-control-begininvoke
http://stackoverflow.com/questions/253138/anonymous-method-in-invoke-call