为什么同步方法总是返回false?

21

在 Windows Phone 8 (仅限于设备!) 尝试运行此代码:

public MainPage()
{
    InitializeComponent();

    var myTrue = GetTrue();
    Debug.WriteLine(myTrue);
    // false
}

[MethodImpl(MethodImplOptions.Synchronized)]
private static bool? GetTrue()
{
    return true;
}

你会发现myTrue总是False!为什么?!怎么可能?!

更新:在以下设备上测试通过:Nokia Lumia 920、HTC 8X、Nokia Lumia 925。


1
myTrue.Value怎么样? - Joachim Isaksson
9
前一句话的意思是这个优化器之前就有问题了,现在它的表现像个抖动虫子。建议到 connect.microsoft.com 上报告此问题,并提供手机细节。一个可能的解决方法是使用 [MethodImpl(MethodImplOptions.NoInlining)]。 - Hans Passant
[MethodImpl(MethodImplOptions.Synchronized | MethodImplOptions.NoInlining)] 没有任何效果。仍然返回 false - Thorarin
1
@HansPassant,把您的评论发布为答案,这样这个问题就可以从未回答列表中删除了,岂不是很有意义? - bas
2
OP应该说明是哪个设备,这样其他人才能复现它。 - NothingsImpossible
显示剩余6条评论
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接