C# Панель задач, индикатор выполнения, получение значения из проигрывателя Windows Media currentMedia.currentPosition
Я попытался получить значение следующим образом, но это не сработало:
private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
{
TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Normal);
axWindowsMediaPlayer1.Ctlcontrols.play();
axWindowsMediaPlayer1.Ctlcontrols.currentItem =
axWindowsMediaPlayer1.currentPlaylist.Item[listBox1.SelectedIndex];
backgroundWorker2.RunWorkerAsync();
}
private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
{
double val = 100*axWindowsMediaPlayer1.Ctlcontrols.currentPosition/axWindowsMediaPlayer1.currentMedia.duration;
TaskbarManager.Instance.SetProgressValue((int)val,100);
}
Я также не уверен, куда бы я поставил точку для остановки прогресса, но я думаю, что еще немного рано думать об этом, так как я все равно не могу заставить прогресс работать.
Проблема в том, как я использовал backgroundWorker или как я обновляю значение, или что-то еще?
Заранее спасибо,
~~ hlfrmn
РЕДАКТИРОВАТЬ:
private void TaskbarProgressValueDeterminator()
{
TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Normal);
while (axWindowsMediaPlayer1.Ctlcontrols.currentPosition < axWindowsMediaPlayer1.currentMedia.duration)
{
TaskbarManager.Instance.SetProgressValue((int)(100 * axWindowsMediaPlayer1.Ctlcontrols.currentPosition / axWindowsMediaPlayer1.currentMedia.duration), 100);
}
TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.NoProgress);
}
1 ответ
Решение
Фоновый рабочий обновит прогресс только один раз. Я ожидаю, что вам нужно включить цикл while или таймер для повторного обновления прогресса во время воспроизведения дорожки.