Application.Current.Dispatcher.BeginInvoke - 放置在哪里试试&抓住?

时间:2012-03-06 14:51:46

标签: .net wpf try-catch

如果我在后台调用调度程序,请执行以下操作:

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

我是否应该将上面的代码包装在Try&抓住或放置尝试&赶上MethodToCall()方法?

非常感谢,

2 个答案:

答案 0 :(得分:4)

如果您真的有案例可以捕获特定的例外,那么try { } catch应该放在MethodToCall内。

答案 1 :(得分:3)

您好BeginInvoke将在anoster堆栈中执行您的方法。 因此,围绕“Application.Current.Dispatcher.BeginInvoke”的try-catch将无效。

你需要做这样的事情:

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

或简单地在“MethodToCall”中。

正如ChrisF所说。