dinghao

记录成长点滴

 

随笔分类 -  Silverlight

Silverlight内存泄露(七)Command
摘要:MVVM中View与ViewModel是强引用的双向关联关系,容易发生内存泄露,任何一方没有被回收都会导致另一方不能被GC回收。 Comand连接了View与ViewModel,容易产生内存泄露。 发现内存泄露 在几个View间导航几次,两次导航到View页面,获取内存快照,发现Info有两个实例。内存没有被释放。 为了每次导航到消息页面,都保存上一次显示的信息,InfoViewModel采用了单例模式,作为缓存,InfoViewModel只有一个实例,按照设想Info也应该只有一个实例。 代码: var lazyViewModelMapping= LazyViewModelExports.. 阅读全文

posted @ 2011-04-17 16:06 思无邪 阅读(2075) 评论(3) 推荐(2)

Silverlight内存泄露(六)MEF等Ioc框架引起内存泄露-ExportLifetimeContext
摘要:对象的创建可以使用new,也可以使用IOC架如:castle、MEF等,IOC创建的对象的生命周期,可能IOC负责管理,使用框架的开发者如果不弄清楚可能会造成内存泄露问题。这些内存泄露问题并不是IOC框架的bug,只是开发者使用不当或者不注意造成的内存泄露问题。以MEF为例说明我碰到的两种内存泄露问题。内存泄露系列阅读提示:一摸一样的对象图,有时候我们可以认为它是内存泄露,有时候又认为它不是内存泄露,这一切只是由于上下文不同,这一系列文章中ANTS Memoery Profle截图都是有特定上下文,单独看完全没有意义。如何确定是内存泄露?可以参考前面的文章。对象以图的形式存在,Ants Mem 阅读全文

posted @ 2011-04-15 14:06 思无邪 阅读(1809) 评论(2) 推荐(4)

Silverlight内存泄露(五)MEF等Ioc框架引起内存泄露-PartCreationPolicy
摘要:对象的创建可以使用new,也可以使用IOC架如:castle、MEF等,IOC创建的对象的生命周期,可能IOC负责管理,使用框架的开发者如果不弄清楚可能会造成内存泄露问题。 这些内存泄露问题并不是IOC框架的bug,只是开发者使用不当或者不注意造成的内存泄露问题。 以MEF为例说明我碰到的两种内存泄露问题。 内存泄露系列阅读提示: 一摸一样的对象图,有时候我们可以认为它是内存泄露,有时候又认为它不是内存泄露,这一切只是由于上下文不同,这一系列文章中ANTS Memoery Profle截图都是有特定上下文,单独看完全没有意义。如何确定是内存泄露?可以参考前面的文章。 对象以图的形式存在,An. 阅读全文

posted @ 2011-04-14 21:21 思无邪 阅读(2732) 评论(3) 推荐(5)

Silverlight内存泄露(二)解决内存泄露之Dispose误用
摘要:按顺序第二篇应该是”如何检测SIlverlight内存泄露”,但这一系列都是解决实际问题的日志,有些检测结果没有被保存下来,不可能为了写这些文章,而重现bug。想到哪就写到哪了。 看到许多文章在解决事件为被注销引起内存泄露时,通过在Dispose中注销事件,以释放资源,这可能会出现未预料的问题。 Dispose模式介绍 参考:Effective C# - 条款18:实现标准的Dispose模式 要点: 通过实现IDisposable接口,你写成了两件事:第一就是提供了一个机制来及时的释放所有占用的托管资源,另一个就是你提供了一个标准的模式让用户来释放非托管资源。这是十分重要的,当你在你的类型. 阅读全文

posted @ 2011-04-12 16:57 思无邪 阅读(2666) 评论(3) 推荐(3)

Silverlight内存泄露(一)序
摘要:不知道有多少人遇到过Silverlight程序内存狂涨的状况,点击几个按钮、跳转几个页面程序的内存使用量一直上升。 即使最简单的程序,用silverlight模板,创建一个导航程序,跳转几次页面silverlight内存使用也再增加。 托管代码内存由GC回收,在silverlight、wpf出现之前内存泄露出现的比较少,但是silverlight程序却很容易发生内存泄露。 最近一直再处理Silverlight内存泄露问题,但网上相关内容很少,一些经验和大家分享。 托管代码内存泄露原因 GC介绍:NET中GC小记 http://www.cnblogs.com/aaronbao/archive/. 阅读全文

posted @ 2011-04-12 15:45 思无邪 阅读(3397) 评论(5) 推荐(2)

Silverlight IReader阅读器第二版
摘要:下载地址silverlight 阅读器 主要是非功能方面的改进,整个架构做了调整。 a) 采用MVVM架构 b) 使用自定义导航结构 c) 使用MEF d) 用户可以通过配置文件新增解析站点。 e) 使用百度搜索,放弃google(由于经常被墙),下一版本会采用bing api。 功能方面: a) 图书文本文件生成。使用手机的方便了,可以直接生成文本,不必再通过为下载一本小说的文本而费力搜寻。 b) 改进收藏功能,可手动、自动更新收藏的图书,使收藏图书保持最新状态。 c) 本地图书,不再读取在线内容。 d) 改进了搜索功能 e) 新增目录预加载,收藏界面、排行榜界面会预加载目录,此时打开目录. 阅读全文

posted @ 2011-04-07 16:28 思无邪 阅读(1387) 评论(4) 推荐(2)

silverlight阅读器——面向领域的浏览器(二)——Silverlight阅读器架构
摘要:读者最关心的是阅读的内容而不是内容的来源,同一本图,网上有图片版也有文字版本,阅读器可根据用户阅读习惯(比如用户只希望阅读图片章节)自动从网络找到相关图书内容。 阅读器核心价值是提供比浏览器更好的用户体验: 1、 无广告,没弹出窗口 2、 根据用户习惯预加载,阅读无延迟 3、 章节更新通知 4、 统一UI、阅读方便 5、 用户收藏图书保存到开放平台,可以通过开放平台阅读。如:把收藏图书保存到qq空间。 6、 更安全,基于Silverlight,恶意代码在解析器已经被过滤比Html更安全。 以上功能都是浏览器无法提供的。 主要业务流程 阅读器核心的功能是为用户提供方便、友好的阅读方式,以用户阅. 阅读全文

posted @ 2011-04-07 16:23 思无邪 阅读(1751) 评论(8) 推荐(6)

silverlight阅读器——起源面向领域的浏览器——概念
摘要:最近浏览器越来越多,火狐、谷歌、360、百度……,s为什么如此多的公司都要发布自己的浏览器呢?个人认为原因有两点:1. 浏览器离直接面对用户,所有web应用最后都要通过浏览器呈现,从浏览器的屏蔽广告插件可以看出,浏览器可以修改站点内容展现样式,甚至某些浏览器直接在站点中加上自己的广告。2. 浏览器已经不仅仅浏览网页而成为了Web平台,可以在浏览器平台上整合自己的业务,扼杀对手的相同业务。什么是面向领域的浏览器内容+展现形式=用户通过浏览器看到的信息。面向领域的浏览器=聚焦爬虫+Htm解析器+领域业务处理+领域的UI。聚焦爬虫、Htm解析器是基础,可以从网络中找到某一领域的信息。 领域业务处理. 阅读全文

posted @ 2011-04-07 12:49 思无邪 阅读(1770) 评论(3) 推荐(2)

silverlight异步陷阱(二)循环
摘要:由于异步完成事件不能确定,顺序也不能确定,如果把异步操作放到循环内,可能会产生意想不到的结果。 下面的程序本意是:循环items集合,为每个item赋值。 foreach (BookRankItem item in items) { //item只有部分属性有值 //Debug.WriteLine(item.Index);//输出0,1,2,3 EventHandler bookPageHander = (s, e) => { //为item加载数据 BookPage bookPage = service.BookPage; item.LoadFromPage(bookPage); Pa 阅读全文

posted @ 2011-04-07 11:29 思无邪 阅读(551) 评论(1) 推荐(0)

silverlight 异步陷阱(一)不能Remove事件处理程序
摘要:Silverlight中许多操作都要去异步完成,但有时候会碰到多个异步操作需要按照一定顺序完成,事件是把异步操作转换成同步操作的一种方法。 lambda是操作事件的简洁方式,事件、lambda、同步组合在一起,就会产生事件处理程序不能移除的状况。看下面的代码:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->publicvoidLoadChapter(stringuri){//两个异步操作需要协调EventHandlerhandler=(s 阅读全文

posted @ 2011-02-16 13:59 思无邪 阅读(1666) 评论(1) 推荐(2)

IReader Silverlight电子阅读器介绍开源项目
摘要:旧版本地址:http://htmlextractor.codeplex.com/ 新版本架构没有稳定,暂时还没有放上。如果有兴趣可以留言。 演示地址: 演示地址1 演示地址2 部署在一个免费php空间,不知道什么原因,不能自动更新。因此有新版本时,必须先删除再重新安装。 演示也需要silverlight运行时支持,如果本地没有安装,请先下载silverlight: 天空软件站微软官方下载地址 下载: 只有800多k,下载完以后,点击default.html,运行需要silverlight4,如果本地没有,必须先安装。 阅读器下载地址:阅读器 silverlight下载地址: 天空软件站微软官方 阅读全文

posted @ 2010-12-20 20:42 思无邪 阅读(1634) 评论(3) 推荐(4)

silverlight在线阅读器(二):为silverlight增加gb2312编码
摘要:阅读器遇到的第一问题就是中文编码,许多网站都使用中文编码,而silverlight并不支持,这是首先要解决的问题。 .NET Compact Framework同样也不支持GB2312编码,这个解决方法同样适用于.NET Compact Framework。 方法其实很简单,通过GB2312与unicode的对照表。首先把取得字节码,再转行到Unicode码,最后查表取得对应汉字,接下来就是实现的问题了。 首先定义转换字典:字典信息可以从 转换字典 获得。 第二步实现Encoding类,命名为:Gb2312Encoding,代码如下: 代码Code highlighting produced. 阅读全文

posted @ 2010-07-06 23:15 思无邪 阅读(1739) 评论(4) 推荐(1)

silverlight在线阅读器(一):介绍
摘要:在线图书阅读器 特点:1、基于Silverlight4,必须运行在OOB模式,第一次运行点击安装按钮。2、流量小。只下载网页中有用的内容,网页中的css、js、视频、图片等无关内容都不会下载,流量非常小。3、章节预读取,读起来没有延迟,在线阅读与本地阅读一样流畅。(内容简介、目录并不会预读取,默认预读取3章)4、键盘快捷键。可以通过键盘翻页、滚屏。5、内存使用率低。预读取的内容都保存在本地缓存,加载图书多了内存使用率也不会增加。6、搜索图书功能。7、图书收藏 8、图书下载,图书可以下载到本地,下载速度非常快。9、可以读取本地图书10、开源阅读器程序界面借用了微软silverlight cont 阅读全文

posted @ 2010-07-06 21:44 思无邪 阅读(1548) 评论(2) 推荐(1)

导航