首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

silverlight内存消耗有关问题

2013-01-07 
silverlight内存消耗问题求助之前做了一个SilverLight的项目,我的做法是要在MainView中展示某个页面的时候

silverlight内存消耗问题求助
     之前做了一个SilverLight的项目,我的做法是要在MainView中展示某个页面的时候是先将现在显示在MainView中的页面绑定的数据置null,并将注销其注册的事件,再通过MainView中的Grid.children.clear()方法清理掉,然后新new一个要展示的页面对象,把它加到主页面中的grid。children中,由于水平问题在写代码的过程中new了很多对象,导致内存消耗很高(高的时候达到300、400M)。


我想问的是怎么样能降低它的内存消耗,另外,可不可以在MainView中通过添加一个注销事件,将消耗的内容全部释放掉(或降到最低)?
[解决办法]
这个我不知道你的一个网页中怎么能加载这么多东西。
下面是我的几点想法:
1. 把你的内容分开到很多页面,这样当不需要某些内容的时候,可以关掉。
2. 仅在需要的时候加载。
3. 不使用的话及时释放,这个比较笼统。

仅仅个人想法,供参考,我没遇到过你这么恐怖的情况。
[解决办法]


// 把你不需要的对象全部设置为空,不要有被引用,然后手动调用GC回收。
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();

按理应该这样,但我在实际中也碰到内存不断增加,不释放的问题。。。
现在我对内存的解决也不是太好。
[解决办法]
我也遇到了 这个问题 急啊 悲剧silverlight
[解决办法]
我的程序也会感觉有点内存占用过高,为了减小xap大小,都是通过加载程序集缓存还有动态加载程序集来实现的。

不知道这个是不是就占用了很多内存。

不过你说通过new控件然后加载到Grid中。可不可以考虑通过控件的隐藏属性来控制不停的new然后在clear呢?
其实silverlight页面设计的语言就是个xml。按常理来说动态加载创建xml的方式估计会比new会更好点。


[解决办法]
可不可以通过这样的方式动态去添加你的控件呢!?只是个思路,看看行不行

if (i >= count) break;
                StringBuilder xaml = new StringBuilder();
                xaml.Append("<TextBlock ");
                xaml.Append("xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"");
                //xaml.Append(" TextWrapping="Wrap"  FontSize="14" Foreground="White"  Width="235" ");
                xaml.Append(" FontSize="12" Foreground="White"  Width="235" ");
                xaml.Append(" Text="  " + dataList[i].Name + "" Tag="" + dataList[i].ID + "" />");

热点排行