Поймать исключение в фоновом режиме с делегатом - PullRequest
0 голосов
/ 14 декабря 2011

У меня проблема с перехватом исключения в этом коде:

Класс Client может выдавать некоторые исключения.Если имя пользователя и пароль неверны (для IE), клиентский класс выбрасывает AccessDeniedExeption , но происходит сбой программы без перехвата этого исключения.

Я что-то не так сделал?

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{     
    string dbcUsername = "account", dbcPassword = "password";
    try
    {
        client = (Client)new HttpClient(dbcUsername, dbcPassword);
        client.Decode(new DecodeDelegate(this.Decoded), e.Argument,
            Client.DefaultTimeout);
    }
    catch (AccessDeniedException eAccess)
    {
        e.Result = eAccess; 
    } 
    catch (Exception eEx)
    {
        e.Result = eEx; 
        Debug.WriteLine("Exception"+eEx.Message);
    }
    this._ready.WaitOne();
}

private void backgroundWorker1_RunWorkerCompleted(object sender, 
    RunWorkerCompletedEventArgs e)
{
    if (e.Result == null)
    {
        Debug.WriteLine("OK");
    }
    else 
        Debug.WriteLine(e.Result.ToString());
}

Обновление: я удалил Try / Catch и изменил RunworkerComplet с этим кодом: Ошибка говорит, что я не обрабатываю AccessDeniedException

 private void backgroundWorker1_RunWorkerCompleted(object sender, 
        RunWorkerCompletedEventArgs e)
    {
            if (e.Error != null)
            {
                Debug.WriteLine(e.Error.Message);
            }
            else
            {
                if (e.Cancelled)
                    Debug.WriteLine(e.Cancelled);
                else
                { 
                    Debug.WriteLine(e.Result.ToString());
                }
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...