internal static void FilterExceptionThroughCausalities(ITask task, Exception exception) { try { CausalityThreadContext currentThreadCausalities = Dispatcher.GetCurrentThreadCausalities(); if (CausalityThreadContext.IsEmpty(currentThreadCausalities)) { if (task != null) { DispatcherQueue taskQueue = task.TaskQueue; if (!taskQueue.RaiseUnhandledException(exception)) { Dispatcher dispatcher = taskQueue.Dispatcher; if (dispatcher != null) { dispatcher.RaiseUnhandledException(exception); } } } } else { currentThreadCausalities.PostException(exception); } } catch (Exception exception2) { Dispatcher.LogError(Resource1.ExceptionDuringCausalityHandling, exception2); } }