繁体   English   中英

仅在使用调试器执行操作时执行

[英]Action executing only when stepping with debugger

使用WP8仿真器,我有了Media元素(在我的XAML文件的Layout Root里面,因此该元素在运行时是视觉树的一部分),并且我试图以编程方式触发它从后面的代码中播放。

当我的应用后端需要播放声音时,我正在使用Caliburn Micro EventAggregator发送消息。 在后面的视图代码中,我使用IHandle设置媒体元素的Source并触发Play。

public void Handle(ToneMessage message)
{
    MediaElem.Source = message.ToneUri;

    MediaElem.Play();
}

当我触发消息事件时,没有声音播放。 但是,如果我在MediaElem.Play()上放置一个断点,则当我越过它时,声音会播放。

我不知道发生了什么,基本上我的代码只有在使用调试器进行调试时才有效。 我仍然在UI线程上(甚至使用Dispatcher进行了明确尝试)。

任何想法都欢迎。

如果它与调试器一起使用,而不是在实际应用程序中使用,则几乎可以肯定这是一个时序问题。

就您而言,问题在于您在尝试播放声音之前没有等待声音加载。 它可以在模拟器上运行,因为执行被暂停了,从而有足够的时间来加载声音。

在设置源之前,请订阅MediaElement的MediaOpened事件。 然后,在这种情况下,调用Play方法播放声音。

或者,可以将AutoPlay属性设置为true以在完成下载后自动播放声音。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM