Task Update() { Debug.WriteLine("SmtcMetadataHandler.Update()"); try { var smtc = _systemMediaTransportControls; var position = _getPosition(); TimeSpan?nextEvent = null; lock (_lock) { nextEvent = _metadataSink.Update(_state, position); } var title = GetTitle(); var artist = GetArtist(); if (title != _title || artist != _artist) { Debug.WriteLine("SmtcMetadataHandler.Update() set " + title); _title = title; _artist = artist; smtc.DisplayUpdater.ClearAll(); smtc.DisplayUpdater.Type = MediaPlaybackType.Music; var properties = smtc.DisplayUpdater.MusicProperties; if (null != title) { properties.Title = title; } if (null != artist) { properties.Artist = artist; } smtc.DisplayUpdater.Update(); _notifier.Notify(BackgroundNotificationType.Track, title); } if (nextEvent.HasValue && nextEvent > position) { if (nextEvent.Value != _lastReport) { _lastReport = nextEvent.Value; _reportNextEvent(_lastReport); } } } catch (Exception ex) { Debug.WriteLine("SmtcMetadataSink.Update() failed: " + ex.Message); } return(TplTaskExtensions.CompletedTask); }