Use Application.Current.Dispatcher.Invoke to throw an exception

image_pdfimage_print


   
  
<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);
        }
    }
}