This blog shows difference between invoke and begin invoke

· Delegate.Invoke: Executes synchronously, on the same thread.

· Delegate.BeginInvoke: Executes asynchronously, on a threadpool thread.

· Control.Invoke: Executes on the UI thread, but calling thread waits for completion before continuing.

· Control.BeginInvoke: Executes on the UI thread, and calling thread doesn't wait for completion.