In Winforms,
I have a non-GUI thread listening for incoming UDP messages.
When it receives a message, it update various UI components on a form by calling one of the form's methods.  
This is apparently a race condition.
It seems that I am suppose to use some kind of InvokeIfRequired pattern on every single component.  
Can I just get a single lock, instead of litering my code with hundreds of these InvokeIfRequired conditionals and lambdas everywhere that people seem to suggest?  Can I introduce a thread safe adjustment around the single call to the form, instead of having to modify the internals of the form code?
My running thread looks something like this:
private static void HandleMessages(frmGui gui)
{
   while(true){
      if (/*udp message found*/){
          gui.UpdateLotsOfGuiComponents();
      }
   }
}
And the form looks something like this:
public partial class frmGui : Form
{
    public void UpdateLotsOfGuiComponents()
    {
        //lots of UI changes through a large call stack
    }
}
I was hoping to just put something around my call to 
gui.UpdateLotsOfGuiComponents();.