繁体   English   中英

WPF调度程序抛出TargetInvocationException

[英]WPF Dispatcher throws TargetInvocationException

我的调试器有问题,当在UI线程中执行了错误的代码时,调试器正确地指出了错误的行,与在线程内执行时相同,但是在调度程序中调用时,它的行为有点怪异:抛出TargetInvocationException在拆卸中。

如何使其正确显示并避免出现此烦人的消息?

这是一个说明问题的简单示例:

private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        //navigator.NavigatToMenuAccueil(true);

        //Throws NullPointerException
        /*String x = null;
        String y = x.ToUpper();*/

        Thread th = new Thread(DoWork);
        th.Start();
    }

    private void DoWork()
    {
        //Throws NullPointerException
        /*String x = null;
        String y = x.ToUpper();*/

        Thread.Sleep(1000);
        Dispatcher.BeginInvoke(new Action(() =>
        {
            //Throws TargetInnvocationException 
            /*
            String x = null;
            String y = x.ToUpper();
             */

            MyTextBlock.Text = "My New Text";
        }));            

    }

TargetInvocationException是反射( 根据MSDN )通过反射调用的方法引发的异常,并且通过使用BeginInvoke ,您正在告诉Dispatcher这样做。

在传递的委托中引发的任何异常都包装在TargetInvocationException 您不能阻止分派器包装原始样品。 您仍然可以通过访问InnerException获得原始异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM