0

毎秒、次のコードで画面をキャプチャします。最初の 40/50 回は機能し、その後、InvalidArgumentExceptionコードの 1 行目と 3 行目に が表示されます。

Bitmap bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics g = Graphics.FromImage(bmpScreenshot);
g.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size);
bmpScreen = bmpScreenshot;
4

2 に答える 2

3

おそらく、いくつかのオブジェクトを破棄する必要があります。

表示されているコードだけではわかりにくいですが、オブジェクトを適切に破棄しておらず、メモリが不足していると推測されます。オブジェクトを破棄する必要があることは確かですGraphics。ビットマップは、使い終わったら破棄する必要がある可能性があります。エラーキャッチの設定方法によっては、メモリ不足の例外を飲み込んで続行すると、使用可能なメモリに収まらない新しいオブジェクトはインスタンス化されず、コンストラクターは null を返します。その後、null を受け取りたくないメソッドに null を渡すと、InvalidArgumentException結果として が発生する可能性があります。

于 2015-04-10T18:24:51.523 に答える