MediaElement位置不会更改

时间:2013-07-18 08:50:30

标签: c# wpf mediaelement

我想用MediaElement来播放音乐,当音乐播放到某个位置时,请做一些动作。代码是这样的:

private void button1_Click(object sender, RoutedEventArgs e)
{
    mediaElement1.Play();
    game_pose_poller.RunWorkerAsync(); // game_pose_poller is a BackgroundWorker object
    button1.IsEnabled = false;
}

private void game_pose_poller_DoWork(object sender, DoWorkEventArgs e)
{
    while(true)
    {
        if (mediaElement1.Position >= sometime)
        {
            // do something

但是我发现程序什么也没做。调试时我发现mediaElement1.Position始终为零。即使在调用Play()之后,为什么它总是为零? mediaElement1.Source是一个mp3文件,其中包含项目资源,LoadedBehavior是手动(或Play()引发异常)。

1 个答案:

答案 0 :(得分:0)

我之前使用DispatchTimer代替BackgroundWorker做了类似的事情。这就是我的工作方式:

private DispatcherTimer positionTimer;

private void button1_Click(object sender, RoutedEventArgs e)
{
    // Create a timer that will check your condition (every second for example)
    positionTimer= new DispatcherTimer();
    positionTimer.Interval = TimeSpan.FromSeconds(1);
    positionTimer.Tick += new EventHandler(positionTimerTick);
    positionTimer.Start();

    mediaElement1.Play();
    button1.IsEnabled = false;
}

void positionTimerTick(object sender, EventArgs e)
{
    if (mediaElement1.Position.TotalSeconds >= sometime)
    {
        // do something
    }
}