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






Manage unhandled exceptions that are thrown on secondary worker threads.

Manage unhandled exceptions that are thrown on secondary worker threads.
  

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

    }
}

   
    
  








Related examples in the same category

1.Cross Thread Exception Raising
2.Cross Thread Exception Raising WorkerThread
3.Check Exception type for DispatcherUnhandledException
4.Raise exception from button click eventRaise exception from button click event
5.Security ExceptionSecurity Exception
6.Throw Handled ExceptionThrow Handled Exception
7.Throw Unhandled ExceptionThrow Unhandled Exception
8.Throw Unhandled Exception From ThreadThrow Unhandled Exception From Thread
9.Customize UpdateSourceExceptionFilterCustomize UpdateSourceExceptionFilter
10.Throw Exception from button click actionThrow Exception from button click action
11.Catch XamlParseExceptionCatch XamlParseException
12.Manage unhandled exceptions that are thrown on secondary user interface (UI) threads.