【问题标题】:Why does the Synchronized method always return false?为什么 Synchronized 方法总是返回 false?
【发布时间】:2013-12-13 13:17:23
【问题描述】:

在 Windows Phone 8 中(仅在设备上!)尝试运行以下代码:

public MainPage()
{
    InitializeComponent();

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

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

你会看到myTrue总是False!为什么?!怎么可能?!

更新:在设备上测试:诺基亚 Lumia 920、HTC 8X、诺基亚 Lumia 925

【问题讨论】:

  • myTrue.Value 怎么样?
  • 同样的结果。结果会有所不同,如果方法不是静态的或不是布尔的?或者如果方法未标记为 MethodImplOptions.Synchronized
  • 嘎嘎声就像一个抖动的错误,之前优化器有问题。在 connect.microsoft.com 上报告此问题,不要忘记提及电话详细信息。一种可能的解决方法是 [MethodImpl(MethodImplOptions.NoInlining)]
  • @HansPassant 将您的评论作为答案发布是否有意义,以便可以从未回答的列表中删除此问题?
  • OP 应该说明哪个设备可以复制它。

标签: c# windows-phone-8


【解决方案1】:

我认为这种行为是由于:

Windows 手机

不支持为 MethodImplAttribute 构造函数指定 Synchronized 选项,并且不会导致同步行为。

在这里查看http://msdn.microsoft.com/en-us/library/windowsphone/develop/system.runtime.compilerservices.methodimploptions%28v=vs.105%29.aspx

【讨论】:

    猜你喜欢
    • 2016-10-19
    • 2014-06-15
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    相关资源
    最近更新 更多