タイトルには、いくつかの質問がありますが、どれも私を助けたり、私の問題を解決するように指示したりできませんでした.
C# winform を使用して、リアルタイムまたはほぼリアルタイムのイメージング アプリケーションを構築しています。
しかし、winformでPictureBoxに画像を割り当てる
pictureBox.Image = image;
基本的Object is currently in use elsewhere.
に、5〜20分でランダムな例外が発生します。
この問題に関する資料を検索しましたが、適切な解決策が見つかりませんでした。プログラムが単に画像をキューから表示するように設定しているときに、エラーが発生しました。したがって、その画像を他のスレッドで使用する方法はありません。
現時点では、winform がイメージング アプリケーションに適したプラットフォームかどうかはわかりません。WPF などの別のプラットフォームに移行する必要がありますか?
経験者からのアドバイスが欲しい。
更新:ナタナエルが指摘したように、マルチスレッドからピクチャボックスにアクセスできたので、マルチスレッドがピクチャボックスのイメージにアクセスできると仮定しました。したがって、上記の行を次のように変更すると、エラーは発生しなくなりました。
private void SetImage(Bitmap image)
{
if (this.pictureBox.InvokeRequired)
{
SetImageCallback callback = new SetImageCallback(SetImage);
this.BeginInvoke(callback, new object[] { image });
}
else
{
pictureBox.Image = image;
}
}