2013-01-30 3 views
0

В winforms, используя vb.net и .NET 4.0 32bit, я создал пользовательский элемент управления с настраиваемыми событиями, которые запускались, когда я нажимаю элемент управления, расположенный в настраиваемом элементе управления (в основном просто пузырящиеся события из базовый контроль после небольшой обработки).Исключения, проглатываемые обработчиками событий

У меня есть этот элемент управления, назовем его child, на втором обычном, скажем Parent, управление, которое я загружаю в элемент управления вкладки в моей основной форме. В родителю я сделать что-то вроде этого:

Public Class Parent : Inherits ParentBase 

    Public Sub Child_SnapToObject(byval sender ..., byval e ...) Handles Child.SnapToObject 

     ' Do stuff here 

    End Sub 

    Public Sub Child_ScaleChanged(byval sender ..., byval e ...) Handles Child.ScaleChanged 

     ' Do stuff here 

    End Sub 

End Class 

обработчики событий получают выполняется в порядке, но каких-либо исключений, которые происходят в них просто получить проглотил что делает его кошмар для отладки. Это относится ко всем событиям

Child определен в отдельном проекте. Я проверил обработчики событий, которые пузырятся через события из основного элемента управления и все эти исключения для проглатывания. С другой стороны, исключения отбрасываются из конструктора.

Я не могу найти ничего, что подсказывает, что это нормальное поведение ... Кто-нибудь знает, если это ошибка или что, и как она может быть исправлена?

ответ

0

Проблема, по-видимому, связана с тем, что мой пользовательский элемент управления находится в другом проекте. После включения опции меню «Перерыв, когда исключения пересекаются с доменом appDomain или управляемыми/родными ...» (в «Инструменты -> Параметры ->« Отладка »->« Общие ») исключения больше не проглатываются.

Я думаю, что это должно быть включено по умолчанию. Поскольку мой проект является преобразованием из проекта VS2003, я предполагаю, что настройка была отключена во время преобразования.

+0

По умолчанию он не включен. Трудно понять, что стоит за этим, наблюдается исключение при глотании, когда вы нацеливаете x86 на 64-разрядную версию Windows. –

+0

Ох, поэтому он включен по умолчанию после того, как я включил его ... Есть ли причина, по которой это не по умолчанию? Я получаю все исключения, бросая штраф сейчас, поэтому, наверное, это была вещь с перекрестным доменом. Вчера я прочитал о 64-битной проблеме, но я работаю над 32-битным целевым процессором, поэтому я не думаю, что это могло быть так? –

Смежные вопросы