簡體   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