1

私はサービスのリソース リークを突き止めようとしていますが、作成後に次のコードが実際にこのファイルをロックしている可能性があるかどうかに興味があります。開いた後に削除し、再度保存したため、ロックされている可能性がありますか?

コメントに応じて編集:

ファイルは後でアクセスされ、別のプロセスで使用されているためファイルにアクセスできないというメッセージとともに IOException を返します。

また、「img = new Bitmap(...) は、ファイルの作成時に実際にファイルにアクセスしていませんか?それとも、私はそれをオフにしていますか?

 using (Image img = new Bitmap(imgPath))
 {
     path = m_fpService.GetProcessedPath(irec, true);
     if (File.Exists(imgPath))
     {
         File.Delete(imgPath);
     }

     img.RotateFlip((RotateFlipType)adjustedRotation);
     img.Save(imgPath);
 }
4

1 に答える 1

3

ドキュメントから

ファイル名とパスは、アプリケーションに対する相対パスまたは絶対パスにすることができます。このコンストラクターを使用して、BMP、GIF、EXIF、JPG、PNG、および TIFF のファイル形式の画像を開きます。サポートされている形式の詳細については、「ビットマップの種類」を参照してください。ビットマップが破棄されるまで、ファイルはロックされたままになります。

理由はわかりませんが、Bitmapクラスがファイルの一部を遅延ロードできると思います。その機能については、コンストラクターの実行後にアクセスする必要があります。

コンストラクターのストリーム取得オーバーロードを使用して、選択した時点でストリームを閉じることができます。

于 2012-06-29T11:16:52.790 に答える