簡體   English   中英

Windows IoT Raspberry Pi 3 c#MediaPlayer.mediaEnded

[英]Windows IoT Raspberry Pi 3 c# MediaPlayer.mediaEnded

我是新來的。 我正在嘗試使用Win IoT核心在Rasp Pi 3上執行音頻消息播放器。 我設法從USB拇指驅動器播放音頻文件,但是我需要知道音頻文件何時完成播放。

 mediaPlayer = new MediaPlayer();
 mediaPlayer.MediaEnded += MediaPlayer_MediaEnded;

 private void MediaPlayer_MediaEnded(MediaPlayer sender, object args)
    {
        GeneralMessage.Text = "Message Complete!";
    }

我收到上述代碼的錯誤消息。

System.Exception occurred
  HResult=0x8001010E
  Message=The application called an interface that was marshalled for a 
different thread. (Exception from HRESULT: 0x8001010E (RPC_E_WRONG_THREAD))

請幫忙。

問題的原因在於,必須在UI線程上進行UI更改,但是在另一個線程上引發MediaEnded事件。

在Windows IoT核心版中,當您從另一個線程更新UI中的元素時,請使用Dispatcher.RunAsync方法。

Task.Run(async () =>
{
     //this part is run on a background thread...

     await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, 
        ()=> 
        {
             //this part is being executed back on the UI thread...
             GeneralMessage.Text = "Message Complete!";
        });
});

請在這里參考媒體項目,播放列表和曲目 。本文介紹了如何使用MediaSource,並包括了在CoreDispatcher.RunAsync調用中執行的操作。

我設法解決調用thing ..代碼如下

private async void MediaPlayer_MediaEnded(MediaPlayer sender, object args)
    {
        await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
        {
            GeneralMessage.Text = "Done playing.";

     });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM