释放WP7上Application.GetResourceStream返回的基础流
使用Application.GetResourceStream
访问资源时,它返回类StreamResourceInfo
的实例,此类不实现IDisposable。
当我在WP7设备上处理完流后,我应该关闭处理由StreamResourceInfo
公开的底层流 – 我不想知道Using
或Dispose模式。
一个例子是使用该方法访问包含在ZAP包中的ZIP文件,一旦我解压缩该文件,我就不再需要Stream
实例了。
此处提供的代码示例不使用using
, Close()
或Dispose()
。
由于StreamResourceInfo
的文档没有提到Close()
或Dispose()
(并且StreamResourceInfo
实际上并不从Stream
或其他可能实现这些方法的东西inheritance),我认为让对象超出范围和垃圾是安全的。收集自然。
我怀疑StreamResourceInfo
类有一个终结器,它在垃圾收集期间调用基础Stream
对象上的Dispose()
,但我目前没有可用的Reflector副本来validation。 在这方面, IDisposable
模式非常强大。
但是,如果您仍然对这种不确定性感到不舒服,则可以始终在Stream
对象上调用Close()
。
我不是特别了解Windows 7手机,但标准做法是处理对象,如果打开它会自动关闭流。 处置应该是对象的最终操作,而关闭表示可能重新打开。 所以你应该在我看来处理掉。
一旦达到using
范围的结束, Using
自动调用dispose方法。 所以,你可以做这样的事情。 达到范围结束后,您的信息流将被删除。
using (var stream = Application.GetResourceStream(new Uri("myResource.zip", UriKind.Relative)).Stream) { //stream code }
编辑 – 将评论从评论转移到此处:StreamResourceInfo不负责关闭/处理Stream。 除非你将Stream传递给其他东西(例如StreamReader),否则关闭流是你的工作。 找到了一个可能引起关注的链接 。
上述就是C#学习教程:释放WP7上Application.GetResourceStream返回的基础流分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/950591.html