C# 为什么导航在第二次返回页面时引发空异常
我有一个串行端口控制器(用于感应通过其传输模块的任何对象)连接到USB。当它感觉到任何物体通过传输掉落或不掉落时,在输入命令C# 为什么导航在第二次返回页面时引发空异常,c#,wpf,navigation,nullreferenceexception,dispatcher,C#,Wpf,Navigation,Nullreferenceexception,Dispatcher,我有一个串行端口控制器(用于感应通过其传输模块的任何对象)连接到USB。当它感觉到任何物体通过传输掉落或不掉落时,在输入命令t后,它会以0或1响应。页面CshDeposit5包含代码Start.xaml是活动在CshDeposit5.xaml中开始和结束的页面,如下所示: Start.xaml->Lang->菜单->CshDeposit5.xaml->TmpMsg.xaml或tmperrormg.xaml->Start.xaml tmperrormg和TmpMsg是向用户显示发生了什么的页面。第
t
后,它会以0或1响应。页面CshDeposit5
包含代码Start.xaml
是活动在CshDeposit5.xaml
中开始和结束的页面,如下所示:
Start.xaml
->Lang
->菜单
->CshDeposit5.xaml
->TmpMsg.xaml
或tmperrormg.xaml
->Start.xaml
tmperrormg
和TmpMsg
是向用户显示发生了什么的页面。第一次一切都很好。但当它第二次尝试到达此CshDeposit5.xaml时,它会对以下代码抛出异常:
Dispatcher.BeginInvoke(new System.Threading.ThreadStart(delegate
{
NavigationService.Navigate(new Uri("TmpMsg.xaml", UriKind.RelativeOrAbsolute));
}));
NullReferenceexception
关于什么?最好在您的问题中添加异常消息。在任何情况下,您的一些变量都不包含类实例,而是null
。例如NavigationService
。如果它不是类实例,而是null
,则它没有方法Navigate
。为什么它是null
而不是第二次通过时的类实例,您必须进行调试。我使用了调试器,在第二次调用navigationservice时发现了_noparentpage=-1,但无法解释原因。在navigationservice的第一次断点处,它显示以下内容:CanGoBack:true CanGoForward:false内容:{nwcmd.CshDeposit5}当前源:{CshDeposit5.xaml}源:{CshDeposit5.xaml}关于NavigationService:NavigationService:null的第二个条目,请参见ParentPage:-1NullReferenceexception
关于什么?最好在您的问题中添加异常消息。在任何情况下,您的一些变量都不包含类实例,而是null
。例如NavigationService
一个类实例,但是null
,它没有方法Navigate
。为什么它是null
,而不是第二次通过时的类实例,你必须进行调试。我使用了调试器,在第二次调用navigationservice时发现了_noparentpage=-1,但无法解释为什么?在第一次导航服务的断点处它显示以下内容的时间:CanGoBack:true CanGoForward:false内容:{nwcm.CshDeposit5}当前源:{CshDeposit5.xaml}源:{CshDeposit5.xaml}对于导航服务的第二个条目:NavigationService:null\u noParentPage:-1