I don\'t know how to put this but I\'ll try my best.
I have a Windows form application which uses a webcam to take a photo of a user which works fine, I\'m using the
Image image = (Image)pictureBox.Invoke ((Func<Image>) delegate { return pictureBox.Image; });
Take a look at the SynchronizationContext class; it allows you to dispatch work back on the main (UI) thread in a manner that is agnostic of how that mechanism actually works (and therefore works with WinForms and WPF). Therefore you don't need to have a reference to a Control to call Invoke on.
It is what BackgroundWorker uses behind the scenes (you may also be able to use BackgroundWorker, depending on what you're trying to do, which is slightly easier to work with).