0

私の質問は、 Application.GetResourceStream on WP7 によって返された下層のストリームを解放する ですでに尋ねられていますが、質問にはいくつかのバリエーションがあります。

  1. これはデスクトップ WPF アプリケーション用であり、違いがある場合は WP7 用ではありません。
  2. usingストリームの上に構築されたストリーム リーダーでブロックを使用するかどうかを決定する必要があります。

ここにいくつかのコードがあります:

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によって提供されるオブジェクトのこのクローズまたは破棄も同様です。GetResourceStreamStream

  1. 期待される
  2. 許容できる、または
  3. 正しくない

using(ストリームの上に構築されたリーダーで使用または回避する必要がありますか?)

4

1 に答える 1

1

StreamReaderの ctor には、ストリームが閉じられないように指示できるオーバーロードがあります。

また、あなたはそれを少し後方に持っています (私が誤解していない限り)。を呼び出すのはDisposeメソッドでCloseあり、その逆ではありません。

于 2013-01-02T00:15:06.303 に答える