次のコードがあります。このコードは、ストリームを使用してOpen XMLドキュメントを開いて変更し、そのストリームの新しいバイナリ表現を保存します。
MemoryStream stream = null;
try
{
stream = new MemoryStream();
stream.Write(this.GetBinaryRepresentation(), 0, this.GetBinaryRepresentation().Length);
using (WordprocessingDocument document = WordprocessingDocument.Open(stream, true))
{
OfficeDocument.ModifyDocument(document);
this.SetBinaryRepresentation(stream.ToArray());
stream = null;
}
}
finally
{
if (stream != null)
{
stream.Dispose();
}
}
私はもともと2つのusingブロック(1つはMemoryStream用、もう1つはWordprocessingDocument用)を使用していましたが、警告CA2202を受け取りました:「オブジェクト'ストリーム'はメソッドで複数回破棄できます...」MSDNの記事に従って、上記のコード(アウターを使用してtryに変換)を実行しましたが、まだこの警告が表示されます。
Disposeがストリームで1回だけ呼び出されるように、このメソッドをどのように構成できるかわかりません。MSDNの記事には、Disposeが安全に何度も呼び出せることに依存してはならないと記載されているため、この警告を単純に抑制したくないと思います。