我想用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() raise异常)。
发布于 2013-07-18 17:53:28
前段时间,我用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
}
}https://stackoverflow.com/questions/17718801
复制相似问题