Приветствую. Столкнулись в проекте с проблемой: есть WinForms фрейм, на котором в ElementHost добавляется WPF контрол:
var child = new SomeWPFControl();
var host = new ElementHost
{
Child = child,
Dock = DockStyle.Fill
};
Controls.Add(host);
Работает прекрасно, но беда в том, что если внутри контрола происходит исключение, то оно просто проглатывается и наверх ничего не выходит. В самом контроле не хотелось бы городить блоки try/catch, т.к. в проекте есть глобальбая обработка исключений с диалоговым окном для юзера. Гуглеж вывел на совет добавить обработчик события исключения на сам контрол, при добавлении его во фрейм и в нем уже предавать его дальше:
child.Dispatcher.UnhandledException += DispatcherUnhandledException;
private void DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
//Вместо окна планировалось пробросить исключение дальше,
//но до этого обработчика событие не добирается.
MessageBox.Show("Произошло необработанное исключение: " + e.Exception.Message, "Exception");
e.Handled = true;
}
Эффекта нет, исключения не доходят до этого обработчика.
В App.xaml.cs указан глобальный обработчик, он тоже не ловит эти исключения:
Application.Current.DispatcherUnhandledException += handleUIThreadException;
Может кто-то сталкивался с таким поведением? Заранее спасибо.