0

メモリリークが発生しないように、ビットマップを適切に処理する方法を知る必要があります。私はBackgroundWorkerでビデオを取得し、それをPictureBoxに割り当てています。

private void bwVideo_ReadCamera(object sender, DoWorkEventArgs e)
{
  Bitmap temp = null;
  while (true)
  {
    Image<Bgr, Byte> frame = logitec.QueryFrame();
    if (temp != null)
      temp.Dispose();
    temp = frame.ToBitmap();
    pictureBox2.Image = temp;
   }
}

問題は、このコードで「メモリ不足例外」が発生することです。BackgroundWorker ReportProgressを使用してpictureBox2.Image変数を解放し、上記のコードでdisposeが終了するのを待ってみました(PictureBoxイメージでdisposeを呼び出すにはGUIと同期する必要があります)。また、ImageとBitmapの間でデータを共有するImageクラスの「Bitmap」プロパティを使用しようとしました。

だから私の質問は、この状況で、私の画像を処分する適切な方法は何ですか?

4

1 に答える 1

0

Image<Bgr, Byte>おそらく、宣言にusingステートメントが必要です。ドキュメントを参照してください。

于 2013-02-21T16:15:02.093 に答える