Context 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,图像......的异步加载模型,所以我想这样的事情:
Channels_Build("CHANNELS.XML");
Channels_Loaded()
{ // Channels build from some returned XML
foreach Ch in Channels
Cats_Build( Ch.URL, ??? ) ; //async calls
}
Cats_Loaded()
{ // Cats build from some returned XML
foreach Cat in Cats
PLs_Build( Cat.URL ... ) ;
}
PLs_Loaded()
{ // PLs build from some returned XML
foreach PL in PLs
MediaList_Build( PL.URL ... ) ;
}
MediaList_Loaded()
{ // MediaList build from some returned XML
foreach media in MediaList
display Media image
}
Channels_Build,Cats_Build,PLs_Build,MediaList_Build中的每一个都进行异步调用,因此具有关联的回调xxx_Loaded()
每个频道都有一个或多个类别。 每个类别都有一个或多个播放列表。 每个播放列表具有1个或多个媒体 因此,我有一个4级深层次结构
您可以假设Channels,Cats,PLs和MediaList共享一个公共基类。
我应该将这个4x逻辑折叠成一个递归构建方法吗?怎么样?我必须让构建过程将一些信息(父节点)传递给相应的回调(我查找了IAsyncResult.AsyncState)
我的大脑被锁住了,我想不出这里需要什么?递归?,将信息传递给异步调用,特定模式?,...
我应该先将内存中的树数据构建到一个结构中吗?或者只有在我决定使用TreeView控件时才有用?如果我决定使用重复模板将信息显示到列表框中,该怎么办?模板将显示:
Channel-Image+Name
Category-Image+Name
PlayList-Image+Name
MediaList images...
是的,非叶节点将在列表中以可视方式重复。这很好,因为它可能提供我正在寻找的地图。
令人费解的问题仍然存在: 如何在此Async模型中进行枚举和显示所有节点?
谢谢。
答案 0 :(得分:0)
我会看看异步CTP刷新,这简化了这个东西