Obtendo uma exceção não tratada no depurador do VS2010, mesmo que a exceção seja tratada

Eu tenho um problema com o VS2010 em que o depurador para com uma exceção não tratada. No entanto, a exceção é definitivamente tratada. De fato, se eu colocar o código no bloco catch, pressionarei quando pressionar F5. Em Debug -> Exceptions, eu definitivamente faço marque a caixa de seleção "Lançada", para que o IMO não tenha absolutamente nenhuma razão para a caixa de diálogo de exceção não tratada aparecer ...

Não consigo postar o código exato, mas funcionarei em uma amostra em breve. A idéia básica por trás da seção de código incorreto é que eu tenho um thread que fala com o hardware e, se houver um erro ao falar com ele, ligo umHardwareException. O encadeamento é iniciado comBeginInvoke e a exceção é detectada no manipulador de retorno de chamada quando eu chamoEndInvoke.

Quando a exceção é lançada no depurador, eu recebo uma caixa de mensagem que diz 'HardwareException não manipulada pelo código do usuário ". Mas é !!!

EDIT - Bem, isso está me deixando louco. Eu tenho um código de exemplo que é representativo do código que tenho no meu aplicativo e fica assim:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Remoting.Messaging;
using System.Threading;

namespace ConsoleApplication1
{
    public class HardwareException : ApplicationException
    {
        public HardwareException( string message) : base(message) {}
    }

    class Program
    {
        delegate void HardwareTestDelegate();

        static void Main(string[] args)
        {
            HardwareTestDelegate d = new HardwareTestDelegate( HardwareTestThread);
            d.BeginInvoke( HardwareTestComplete, null);
            while( true);
        }

        static void HardwareTestThread()
        {
            throw new HardwareException( "this is a test");
        }

        static void HardwareTestComplete( IAsyncResult iar)
        {
            try {
                AsyncResult ar = (AsyncResult)iar;
                HardwareTestDelegate caller = (HardwareTestDelegate)ar.AsyncDelegate;
                caller.EndInvoke( iar);
            } catch( Exception ex) {
                Console.WriteLine( "Should see this line without getting an unhandled exception message in the IDE");
            }
        }
    }
}

Eu jogo minha HardwareException a partir do thread e lida com a exceção quando EndInvoke é chamado. Acho que Murphy estava certo, porque quando executo esse código de exemplo, ele faz o que eu esperava - ou seja, nenhuma mensagem de erro de exceção não tratada aparece no IDE!

questionAnswers(2)

yourAnswerToTheQuestion