PictureBox 画像更新時のファイル ロックの問題に対処する
PictureBox の Image プロパティを新しいビットマップで更新すると、例外がトリガーされ、画像ファイルがロックされたままになる場合があります。これは、ビットマップがソース ファイルへの参照を保持しているためです。
解決策: ファイルをロックせずに効率的に画像をロードする
この解決策には、ファイル ロックを作成せずに画像をロードすることが含まれます。 この方法は非常に効率的です:
<code class="language-csharp">public static Image FromFile(string path) { byte[] bytes = File.ReadAllBytes(path); using (MemoryStream ms = new MemoryStream(bytes)) { return Image.FromStream(ms); } }</code>
このコードは、画像をバイト配列に読み取り、それを Image オブジェクトにストリーミングして、ファイル ロックを回避します。 これで、画像を PictureBox に安全に割り当てることができます。
パフォーマンスベンチマーク
ビットマップ コピー方法とパフォーマンスを比較したところ、このバイト配列アプローチはかなり高速であることがわかりました (画像あたり約 0.26 ミリ秒、コピー方法では 0.50 ミリ秒)。
ビットマップ オブジェクトの取得
特に Bitmap オブジェクトが必要な場合は、わずかな変更で十分です。
<code class="language-csharp">return (Bitmap)Image.FromStream(ms);</code>
これにより、返されるオブジェクトのタイプが Bitmap であることが保証されます。
これらのメソッドは、PictureBox 画像を更新し、ファイルのロックを防ぎ、アプリケーションの効率を向上させる、信頼性の高いパフォーマンスの高いソリューションを提供します。
以上がPictureBox 画像を更新するときにファイルのロックを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。