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 или таймер для повторного обновления прогресса во время воспроизведения дорожки.

Другие вопросы по тегам