1

我在 Windows Phone 应用程序中有这个奇怪的问题。当应用程序应该显示上一页时,点击硬件后退按钮会退出应用程序。在调试时,我发现了一些非常奇怪的东西。

如果条件满足为假

在此方法中,this.Frameis Not null(如第 3 个引脚所示)但this.Frame.CanGoBack is False(如第 1 个引脚所示)这意味着 && (AND) 运算符应使此条件为false和它一样(如第二个引脚所示)。仍然调试器进入执行条件(如您在第二个引脚下方看到的那样)。

这真的很奇怪,这只会退出我的应用程序。

4

2 回答 2

1

有两个可能的原因:

可能:该属性被多次读取,并且在程序中首次评估时以及在调试器中查看时可以返回不同的值。您的应用程序是否使用多线程或 oes 属性通常会随着时间而改变?

不太可能:jit 编译器中的错误。尽管这不太可能发生,但人们以前曾偶然发现过这类错误。

于 2015-05-29T05:47:33.823 回答
0

this.Frame.CanGoBack 属性在它输入的时间和它到达下一行的时间之间发生了变化。如下实现的属性:

get {
   var result=backingvalue;
   backingvalue=!result;
   return result;
}

会做的。

尝试将代码更改为以下内容:

var bool1=this.Frame!=null;
if (bool1)
{
  var bool2=this.Frame.CanGoBack;
  if (bool2)
  {
    ...
  }
}

然后放置一个断点并检查 bool1/bool2 以及 this.Frame.CanGoBack 的值。

于 2015-05-29T06:08:43.247 回答