我在我的一个项目中遇到过这段代码,它有一个静态函数从文件中返回一个MemoryStream,然后存储在Cache中.现在,同一个类有一个构造函数,它允许将MemoryStream存储在一个私有变量中,然后再使用它.所以它看起来像这样:
private MemoryStream memoryStream;
public CountryLookup(MemoryStream ms)
{
memoryStream = ms;
}
public static MemoryStream FileToMemory(string filePath)
{
MemoryStream memoryStream = new MemoryStream();
ReadFileToMemoryStream(filePath, memoryStream);
return memoryStream;
}
Run Code Online (Sandbox Code Playgroud)
用法:
Context.Cache.Insert("test",
CountryLookup.FileToMemory(
ConfigurationSettings.AppSettings["test"]),
new CacheDependency(someFileName)
);
Run Code Online (Sandbox Code Playgroud)
然后:
CountryLookup cl = new CountryLookup(
((MemoryStream)Context.Cache.Get("test"))
);
Run Code Online (Sandbox Code Playgroud)
所以我想知道谁应该处理memoryStream以及什么时候?理想情况下,CountryLookup应该实现IDisposable.
我应该关心它吗?
它有点丑陋 - 尤其MemoryStream是有状态的,因为它具有"当前位置"的概念.
为什么不直接存储字节数组呢?您可以轻松地构建多个MemoryStream,它们在您需要时包装相同的字节数组,并且您不必担心有状态.
MemoryStreams 通常不需要处理,但我个人倾向于将它们排除在习惯之外.如果您对它们执行异步操作或在远程处理中使用它们,我相信处理确实会对此产生影响.字节数组更简单:)
| 归档时间: |
|
| 查看次数: |
2360 次 |
| 最近记录: |