- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
无法理解 GoToPlaylistItem
和 GoToPlaylistItemOnNextTick
之间的区别,尽管 GoToPlaylistItemOnNextTick
单击了 GoToPlaylistItem
的场景不工作。
如果您想知道是否存在任何差异,请查看此 Post对于使用 GoToPlaylistItemOnNextTick
解决的问题,同时使用 GoToPlaylistItem
当我导航到定义时,我得到了以下详细信息。有人能解释一下吗?
[ScriptableMember]
public virtual void GoToPlaylistItem(int playlistItemIndex);
public void GoToPlaylistItemOnNextTick(int playlistItemIndex);
最佳答案
MediaPlayer
在内部使用了一个 Timer
。此计时器是在名为 CreatePositionTimer
的 protected 方法中创建的:
protected void CreatePositionTimer(TimeSpan interval)
{
if (m_timer == null)
{
m_timer = new DispatcherTimer();
m_timer.Interval = interval; // 6 NTSC frames
m_timer.Tick += new EventHandler(OnTimerTick);
}
}
GoToPlaylistItemOnNextTick
方法简单地设置了一些内部变量:
public void GoToPlaylistItemOnNextTick(int playlistItemIndex)
{
if (!m_goToItemOnNextTick) // don't set it if already set
{
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
。这可确保在 UI 线程空闲时调用 GoToPlaylistItem
。
如果您依赖于 MediaPlayer
触发的某些事件,例如 StateChanged
,则差异可能会很大。如果您调用 GoToPlaylistItem
,此事件将在 GoToPlaylistItem
返回之前立即执行。如果您调用 GoToPlaylistItemOnNextTick
,则该事件只会在您当前的方法完成且 UI 线程空闲时稍后发生。
关于c# - GoToPlaylistItem 和 GoToPlaylistItemOnNextTick 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3707866/
无法理解 GoToPlaylistItem 和 GoToPlaylistItemOnNextTick 之间的区别,尽管 GoToPlaylistItemOnNextTick 单击了 GoToPlayl
我是一名优秀的程序员,十分优秀!