protected void retrieveList(String _containerId, String _parentListId = "", Boolean _useCache = true, MediaItem _parentMediaItem = null) { UPNPMediaListBrowse mediaList; UPNPMediaListBrowse parentList = (UPNPMediaListBrowse)this.getList(_parentListId); String listId = this.containerIdToListId(_containerId, mainContentType); // try to get list from cache, we do not cache search results (isSearchListChild)! if (_useCache) { mediaList = (UPNPMediaListBrowse)this.getList(listId); if (mediaList != null && !mediaList.isSearchChild) { currentContainerId = _containerId; currentListId = mediaList.listId; this.eventListDataReady(mediaList.listId); } } else { if (lists.ContainsKey(listId)) { lists.Remove(listId); } } string tempListPath = ""; if (!String.IsNullOrWhiteSpace(_parentListId)) { tempListPath = parentList.path; } if (_parentMediaItem != null) { if (!String.IsNullOrEmpty(tempListPath)) { tempListPath += "/"; } tempListPath += _parentMediaItem.text; } // if there is no list in cache, then retrieve list mediaList = (UPNPMediaListBrowse)this.createListObject(listId); mediaList.listDataReady += listDataReadySink; mediaList.parentListId = _parentListId; mediaList.path = tempListPath; if (parentList != null) { mediaList.isSearchChild = parentList.isSearchChild; } lists.Add(mediaList.listId, mediaList); mediaList.retrieveListByContainerId(_containerId); }