同様の問い合わせのページをいくつか見て、ほとんどの提案を実装しましたが、これまでに機能したものは何も見つからないようです. うまくいけば、私は明白な何かを見落としていません。
そうですね、AForge.net を使用して画像をキャプチャしています。受信した新しいフレームごとにトリガーされるイベントを提供します。これは、私のコードでは次のようになります。
private void videoSourcePlayer_NewFrame(object sender, ref Bitmap image)
{
framesRecieved++;
try
{
if (!stopCapturing)
{
if (pictureBox1.Image != null)
{
pictureBox1.Image.Dispose();
}
pictureBox1.Image = image.Clone(new Rectangle(0, 0, image.Width, image.Height), image.PixelFormat);
}
}
catch { }
finally { GC.Collect(); }
}
ウィンドウが静止している限り、メモリ使用量は非常に安定していますが、ウィンドウ フォームをつかんで動かし始めるとすぐに、メモリ使用量は増え続けます。ピクチャボックスに関連している可能性があると信じるようになった理由は、「stopCapturing」ブールをtrueにするとすぐに、ウィンドウを画面上で動かしてもメモリの増加が止まるためです。「stopCapturing」は他には使用されず、イベントは通常どおりトリガーされ続けます。唯一の違いは、画像ボックスに表示される画像です。原因が分からないので、どなたか教えていただければ幸いです。
PS: 関連しているかどうかはわかりませんが、私のワークステーションには 2 つの画面があります。