App.GetResourceStream返回的最合适的流使用

时间:2013-01-01 15:05:59

标签: c# wpf resources stream idisposable

Releasing underlying Stream returned by Application.GetResourceStream on WP7已经提出了我的问题,但我对这个问题有几点不同:

  1. 这适用于桌面WPF应用程序,而不是WP7,如果它有任何区别。
  2. 我必须决定是否在流媒体上构建的流阅读器上使用using块。
  3. 以下是一些代码:

    System.Windows.Resources.StreamResourceInfo ri = 
       App.GetResourceStream(new Uri("Resources/Idioms.txt", UriKind.Relative));
    using (System.IO.StreamReader sr = new System.IO.StreamReader(ri.Stream))
    {
       idioms = sr.ReadToEnd().Split(lineSeps, StringSplitOptions.RemoveEmptyEntries);
    }
    

    现在StreamReader的close方法(我假设它是实现IDisposable.Dispose的方法)表明它也关闭了底层流(我假设它也在实现IDisposable.Dispose)。

    关闭或处置IO.Stream的{​​{1}}属性提供的GetResourceStream对象是这样的:

    1. 预期
    2. 可接受,或
    3. 不正确
    4. (我应该在流媒体上构建的阅读器上使用或避免使用Stream吗?)

1 个答案:

答案 0 :(得分:1)

StreamReader的ctor有一个重载,让你告诉它保持流不被关闭。

另外,你有点向后(除非我误解)。这是调用Dispose的{​​{1}}方法,而不是相反。