Общая обработка исключений не выполняется для асинхронных вызовов - PullRequest
0 голосов
/ 06 апреля 2011

Я реализую что-то похожее на Проблема обработки необработанных исключений :

        Application.ThreadException +=
            (s, eargs) => LogException(eargs.Exception);
        AppDomain.CurrentDomain.UnhandledException +=
            (s, eargs) =>
                LogException((Exception)eargs.ExceptionObject);
        Application.SetUnhandledExceptionMode(
            UnhandledExceptionMode.CatchException);

До сих пор это работало хорошо во всех моих приложениях. Когда я сталкиваюсь с ошибкой в ​​этом асинхронном обработчике:

    void DnsResolveCallback(IAsyncResult result)
    {
        try
        {
            IPHostEntry entry = Dns.EndGetHostEntry(result);
            IPEndPoint endpoint = new IPEndPoint(entry.AddressList[0], Port);
            socket = new Socket(endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
            socket.BeginConnect(endpoint, ConnectCallback, null);
        }
        catch (Exception)
        {
            SetStatus(ConnectStatus.Disconnected);
            throw;
        }
        SetStatus(ConnectStatus.Connecting);
    }

Я могу поймать его, если добавлю

        AppDomain.CurrentDomain.FirstChanceException +=
            (sender, eargs) => LogException(eargs.Exception);

но не иначе. Я не хочу использовать FirstChanceException, потому что это кажется неприятным и лишает смысла обработку исключений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...