<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="WpfApplication1.MainWindow" Height="200" Width="400"> <Button Click="aClick">click</Button> </Window> //File:Window.xaml.cs using System; using System.Threading; using System.Windows; using System.Windows.Threading; namespace WpfApplication1 { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.Title = string.Format("Running on Main UI Thread {0}", Thread.CurrentThread.ManagedThreadId); } void aClick(object sender, RoutedEventArgs e) { Application.Current.Dispatcher.Invoke(DispatcherPriority.Send,(DispatcherOperationCallback)delegate(object arg) { string msg = string.Format("Exception forwarded from secondary UI thread {0}.", 1); throw new Exception(msg, null); } , null); } } }