И не поможет. Дело в том, Вы отлавливаете исключение в том потоке из которого запускается делегат. Но сам то делегат будет работать в другом потоке. И именно в рабочем потоке делегата надо перехватить исключение.

Bызов надо немного изменить:

peh.BeginInvoke( rp, new AsyncCallback(MyAsyncCallback), null );


И написать соотвественно callback функцию, в которой и будет перехвачено исключение

private void MyAsyncCallback(IAsyncResult ar)
{
        try
        {
            AsyncResult async = (AsyncResult)ar;
            PointEventHangler peh= (PointEventHangler )async.AsyncDelegate;
            peh.EndInvoke(...);
        }
        catch ( Exception e )
        {
           PointAdd -= peh;
        }
}



данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Автор: BEDE    Оценить