[英]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.