MediaPlayeruses Timerinternally. This timer is created in a protected method CreatePositionTimer:
protected void CreatePositionTimer(TimeSpan interval)
{
if (m_timer == null)
{
m_timer = new DispatcherTimer();
m_timer.Interval = interval;
m_timer.Tick += new EventHandler(OnTimerTick);
}
}
GoToPlaylistItemOnNextTick :
public void GoToPlaylistItemOnNextTick(int playlistItemIndex)
{
if (!m_goToItemOnNextTick)
{
m_goToItemOnNextTick = true;
m_goToItemOnNextTickIndex = playlistItemIndex;
}
}
, , OnTimerTick, , GoToPlaylistItem:
void OnTimerTick(object sender, EventArgs e)
{
[...]
if (m_goToItemOnNextTick)
{
m_goToItemOnNextTick = false;
GoToPlaylistItem(m_goToItemOnNextTickIndex);
}
[...]
}
, , GoToPlaylistItem , GoToPlaylistItemOnNextTick . , , - System.Windows.Threading.DispatcherTimer. , GoToPlaylistItem , .
, , MediaPlayer, StateChanged. GoToPlaylistItem, GoToPlaylistItem. GoToPlaylistItemOnNextTick, , , .