Контекст Silverlight / WPF, C #, .NET 4,
У меня есть 4-уровневое дерево миниатюр, которое мне нужно перечислить и отобразить некоторым осмысленным способом.Для синхронного выполнения (последовательный мир) мы можем думать так:
Channels = Channels_Build("CHANNELS.XML");
foreach Ch in Channels
{
Cats = Cats_Build( Ch.URL ) ;
foreach Cat in Cats
{
PLs = PLs_Build( Cat.URL ) ;
foreach PL in PLs
{
Medias = Medias_Build( PL.URL ) ;
foreach Media in Medias
display Media image
}
}
}
.Однако у меня есть асинхронная модель загрузки для XML, изображений, ..., поэтому я думаю что-то вроде этого:связанный обратный вызов xxx_Loaded ()
Каждый канал имеет 1 или более категорий.Каждая категория имеет 1 или более плейлистов.Каждый PlayList имеет 1 или более медиа. Таким образом, у меня 4-уровневая иерархическая структура
Можно предположить, что каналы, кошки, PL и MediaList имеют общий базовый класс.
Должен ли я сложить эту логику 4x в один метод рекурсивной сборки?Как?Мне бы пришлось заставить процесс сборки передавать некоторую информацию (родительский узел) соответствующему обратному вызову (я посмотрел IAsyncResult.AsyncState)
Мой мозг заблокирован, и я не могу думать о том, что здесь нужно?рекурсия ?, передача информации в асинхронные вызовы, конкретный шаблон ?, ...
Стоит ли сначала строить данные дерева в памяти, в одну структуру?или это будет полезно, только если я решу использовать элемент управления TreeView?Что, если я решу отобразить информацию, используя повторяющийся шаблон, например, в списке.Шаблон будет отображать:
Channel-Image+Name
Category-Image+Name
PlayList-Image+Name
MediaList images...
Да, неконечные узлы будут повторяться визуально вниз по списку.Это нормально, поскольку может предоставить карту, которую я ищу.
Таким образом, остается загадочный вопрос: как мне перейти к перечислению и отображению всех узлов в этой модели Async?
Спасибо.