И не поможет. Дело в том, Вы отлавливаете исключение в том потоке из которого запускается делегат. Но сам то делегат будет работать в другом потоке. И именно в рабочем потоке делегата надо перехватить исключение.
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
ссылка на оригинальное сообщение