首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >准备歌曲时显示ProgressRing,播放歌曲时隐藏它- windows phone 8

准备歌曲时显示ProgressRing,播放歌曲时隐藏它- windows phone 8
EN

Stack Overflow用户
提问于 2015-09-08 11:41:45
回答 2查看 59关注 0票数 0

我用MediaElement开发windows phone 8播放流媒体歌曲的应用程序。我希望在准备歌曲时显示ProgressRing,并在播放歌曲时隐藏它。我执行下面的代码,但没有显示ProgressRing!!

代码语言:javascript
复制
progressRing.IsActive = true;
mediaElement.Source = new Uri(url, UriKind.Absolute);
mediaElement.Play();
progressRing.IsActive = false;
EN

回答 2

Stack Overflow用户

发布于 2015-09-08 13:52:24

您需要将控制权交给UI线程,才能显示进度环。要做到这一点,一种方便的方法是等待Task.Delay (等待足够长的延迟以确保UI可以刷新):

代码语言:javascript
复制
private async Task Play()
{
    progressRing.IsActive = true;

    await Task.Delay(15);

    mediaElement.Source = new Uri(url, UriKind.Absolute);
    mediaElement.Play();
    progressRing.IsActive = false;
}

(请注意,您必须确保将您的方法标记为异步)

另一种方法是调用Dispatcher.BeginInvoke (这似乎有悖于直觉,似乎你已经在UI线程中,但它是有效的):

代码语言:javascript
复制
progressRing.IsActive = true;

Dispatcher.BeginInvoke(() =>
{
    mediaElement.Source = new Uri(url, UriKind.Absolute);
    mediaElement.Play();
    progressRing.IsActive = false;
});
票数 0
EN

Stack Overflow用户

发布于 2015-09-09 00:55:05

MediaElement.MediaOpened事件在媒体加载完成时激发。尝试将该事件添加到MediaElement,并将progressRing.IsActive语句移动到EventHandler方法。

代码语言:javascript
复制
mediaElement1.MediaOpened += new   System.Windows.RoutedEventHandler(mediaElement1_MediaOpened);
progressRing.IsActive = true;
mediaElement1.Source = new Uri(url, UriKind.Absolute);
mediaElement1.Play();


private void mediaElement1_MediaOpened(object sender, RoutedEventArgs e)
    {
    progressRing.IsActive = false;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32448929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档