MediaElement.NaturalDuration выдает исключение при запросе TimeSpan.TotalSeconds

У меня есть форма winforms, в которой я использую MediaElement. Все работает (более-менее) отлично. Единственное, после загрузки медиафайла (mp3) при доступе к NaturalDuration.TimeSpan.TotalSeconds выдается исключение

InvalidOperatoinException: свойство TimeSpan не может быть возвращено для автоматического значения продолжительности.

(Самостоятельно перевел с немецкого)

Как я могу получить доступ к свойству timespan? Во всех найденных мною примерах нет специальных настроек (ладно, похоже, они родные для WPF ...)

Я использую VisualStudio Express .Net 4, C # в Windows 7.

Какие-нибудь намеки?


person Mario The Spoon    schedule 01.11.2010    source источник


Ответы (1)


Вам нужно подождать, пока сработает событие MediaOpened, после этого NaturalDuration будет доступно. Чтобы проверить, доступно ли значение, вы можете использовать свойство NaturalDuration.HasTimeSpan.

person Athari    schedule 01.11.2010
comment
Спасибо! Работает как шарм! Об этом даже говорится в документации для NaturalDuration ... задним числом ... - person Mario The Spoon; 01.11.2010
comment
mediaElement1.MediaOpened + = новый RoutedEventHandler (mediaElement1_MediaOpened); void mediaElement1_MediaOpened (отправитель объекта, RoutedEventArgs e) {Duration d = mediaElement1.NaturalDuration; } - person DmitryBoyko; 18.11.2011
comment
@Discord У меня такая же проблема. Странно то, что я получаю Duration в конце Player_MediaOpened (отправитель объекта, EventArgs e)?! Как мне тогда это исправить? - person Felix D.; 18.11.2015