调用带有try的方法时不捕获异常?

Edw*_*ard 2 .net c# try-catch windows-phone-7

嗨我正在从Web服务中调用一些项目,当他们回来时,我创建了一个为单独的方法内部返回的项目量身定制的界面.现在,每当出现问题时,我都需要捕获异常并向用户显示消息.

private void itemHelper_FeaturedItemsCalled(object sender, List<MyItem> _myItemList)
{
    try
    {
        Dispatcher.BeginInvoke(() =>
        {
            if(_myItemList != 0)
                CreateInterface(_myItemList);
        });
    }
    catch
    {
        Dispatcher.BeginInvoke(() =>
        {
            LoadingScreen.Visibility = System.Windows.Visibility.Visible;
            LoadingTextBlock.Text = "Unable to display items.";
            BusyIndicator1.IsRunning = false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我故意在方法CreateInterface()中抛出一个异常.现在,当这个运行时,我得到了未处理的异常.这是为什么?我认为既然这个方法在try中调用了,它最终会在这里得到处理?

Jon*_*eet 7

通过调用BeginInvoke你说,"在调度程序线程中执行此代码".BeginInvoke是异步的,所以整个方法可能会在代码执行之前完成 - 那么它怎么可能进入catch块呢?到那时,调用线程可能会在完全不同的代码段中.

这是可能的,如果你使用Invoke的,而不是BeginInvoke可能会得到整理返回给调用者除外-但它是我不能看到从文档的任何证据.

编辑:另外,即使你已经成功地捕获异常,你会在这一点上访问从错误的线程UI ...