[英]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.