Manage unhandled exceptions that are thrown on secondary worker threads. : Exception « Windows Presentation Foundation « C# / CSharp Tutorial






<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">Thread</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)
        {
            Thread thread = new Thread(aMethod);
            thread.SetApartmentState(ApartmentState.STA);
            thread.IsBackground = true;
            thread.Start();
        }
        void aMethod(){
            try{
                string msg = string.Format("secondary on worker thread {0}.", Dispatcher.CurrentDispatcher.Thread.ManagedThreadId);
                throw new Exception(msg);
            }catch (Exception ex){
                int secondaryWorkerThreadId = Thread.CurrentThread.ManagedThreadId;
                Application.Current.Dispatcher.Invoke(
                    DispatcherPriority.Send,
                    (DispatcherOperationCallback)delegate(object arg)
                    {
                        string msg = string.Format("from secondary worker thread {0}.", secondaryWorkerThreadId);
                        throw new Exception(msg, ex);
                    }
                    , null);
            }
        }

    }
}
WPF Manage Unhandled Exceptions That Are Thrown On Secondary Worker Threads








24.128.Exception
24.128.1.Cross Thread Exception RaisingCross Thread Exception Raising
24.128.2.Cross Thread Exception Raising WorkerThreadCross Thread Exception Raising WorkerThread
24.128.3.Check Exception type for DispatcherUnhandledExceptionCheck Exception type for DispatcherUnhandledException
24.128.4.Raise exception from button click eventRaise exception from button click event
24.128.5.Security ExceptionSecurity Exception
24.128.6.Throw Handled ExceptionThrow Handled Exception
24.128.7.Throw Unhandled ExceptionThrow Unhandled Exception
24.128.8.Throw Unhandled Exception From ThreadThrow Unhandled Exception From Thread
24.128.9.Customize UpdateSourceExceptionFilterCustomize UpdateSourceExceptionFilter
24.128.10.Manage unhandled exceptions that are thrown on secondary worker threads.Manage unhandled exceptions that are thrown on secondary worker threads.
24.128.11.Throw Exception from button click actionThrow Exception from button click action
24.128.12.Catch XamlParseExceptionCatch XamlParseException
24.128.13.Manage unhandled exceptions that are thrown on secondary user interface (UI) threads.Manage unhandled exceptions that are thrown on secondary user interface (UI) threads.