簡體   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