Application.Current.Dispatcher.BeginInvoke - Где разместить Try & catch? - PullRequest
1 голос
/ 06 марта 2012

если у меня диспетчер, вызывающий в фоновом режиме, как это:

Application.Current.Dispatcher.BeginInvoke(new Action(() => MethodToCall()), DispatcherPriority.Background);

Должен ли я обернуть код выше внутри Try & catch или поместить try & catch в метод MethodToCall()?

Большое спасибо,

Ответы [ 2 ]

4 голосов
/ 06 марта 2012

Если у вас действительно есть случай для обнаружения определенного исключения, тогда try { } catch следует поместить в MethodToCall.

3 голосов
/ 06 марта 2012

Привет BeginInvoke выполнит ваш метод в стеке аностеров.Так что попытка перехвата «Application.Current.Dispatcher.BeginInvoke» не сработает.

Вам нужно сделать что-то вроде этого:

Application.Current.Dispatcher.BeginInvoke(() => {
try
{
    MethodToCall();
}
catch
{
   //handle
}
), DispatcherPriority.Background);

или просто в «MethodToCall».

Как заявил ChrisF.

...