PictureBox 画像割り当てのファイル ロック例外を解決します
実行時に画像を PictureBox に割り当てると、開発者はファイルが別のプロセスによってロックされていることを示すエラーが発生する場合があります。これは、ファイルが Image または Bitmap オブジェクトによってすでに使用されている場合に発生します。この問題を解決するには、ファイルのロックを解除する主な方法が 2 つあります。
メモリストリームを使用する
推奨されるアプローチは、画像データをメモリ ストリームにロードし、ストリームから Image オブジェクトを作成することです。このメソッドはファイルのロックを解除し、さらなる画像処理を可能にします:
<code class="language-c#">public static Image FromFile(string path) { byte[] bytes = File.ReadAllBytes(path); using (MemoryStream ms = new MemoryStream(bytes)) { return Image.FromStream(ms); } }</code>
ビットマップからコピー
もう 1 つの方法は、画像を表す Bitmap オブジェクトのコピーを作成し、それを PictureBox に割り当てることです。この方法では追加のメモリ消費が発生しますが、元のファイル ロックは保持されます:
<code class="language-c#">Image imgCopy = new Bitmap(filePath); pbAvatar.Image = imgCopy;</code>
パフォーマンス テストでは、Bytes から画像を読み込む方が、Bitmap からコピーするよりもはるかに高速であることが示されています。ただし、特に Bitmap オブジェクトが必要な場合は、copy メソッドを使用できます。
以上が画像を PictureBox に割り当てるときに発生するファイル ロック例外を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。