I'm planning on using the SynchronizationContext class to perform some cross-thread marshalling of UI updates. The idea is to avoid having to have a reference to the main form (i.e. the one in Application.Run(form)) just so I can say mainForm.BeginInvoke();
However, one thing that isn't clear from the documentation, is that when you call SynchronizationContext.Post(), which thread it marshalls the call to. Is it always the main application thread, or the thread that first initialised a SynchronizationContext object, or what?