Depends on what you use Invoke on. Delegates run in the calling thread but, Windows or WPF controls dispatch the action for the main thread.

If you use C++/CLI, these managed techniques should work the same way. Otherwise I don't know what you mean. C++ has neither delegates, nor forms. If you use WinApi for window display, use SendMessage/PostMessage to dispatch actions.