假设你的程序是Java(…为什么你给它三个语言标签?)你有几个选择.您可以使用适当的同步事件,例如:
// fields
Object playerStopEvent = new Object();
boolean isPlaying;
// in your media player, when playback is complete:
synchronized (playerStopEvent) {
isPlaying = false;
playerStopEvent.notifyAll();
}
// elsewhere, when waiting for playback to complete:
synchronized (playerStopEvent) {
while (isPlaying) {
try {
playerStopEvent.wait();
} catch (InterruptedException x) {
// abort or ignore, up to you
}
}
}
mediaPlayer.stop();
有关更多示例,请参阅Guarded Blocks的官方教程.
你也可以让mediaPlayer在完成时调用一些回调,例如在开始播放时禁用GUI组件,并在调用完成的回调时重新启用它们(您也可以在此处使用事件侦听器方法).
没有更多的信息,我推荐后者,因为它不会阻止你在播放器播放时做其他无关的事情(或者让你的程序完全不响应),但前者可能更合适,具体取决于你的情况.
如果它在C或C中,则概念是相同的.使用与第一个选项相同的条件变量/事件,或者对第二个选项使用的任何等效的回调/侦听器/信号槽.