【发布时间】:2013-01-10 16:43:59
【问题描述】:
我的应用程序可以正常运行大约 5 分钟,然后它会抛出一些随机的 System.ArgumentException,如下面的屏幕截图所示:
这里最大的问题是这两个论点实际上似乎都是正确的,并且在大约 5 分钟内可以正常工作。
我的应用程序只是在单独的线程中不断拍摄屏幕快照。
下面的代码截取屏幕截图,在这个sn-p中产生了System.ArgumentException(和截图一样)。
Bitmap SNew = new Bitmap(NewRes.Width, NewRes.Height);
using (Graphics g = Graphics.FromImage(SNew))
g.CopyFromScreen(0, 0, 0, 0, new Size(NewRes.Width, NewRes.Height));
同样的异常也可能出现在CopyFromScreen 方法中,具有相同的看似正确的NewRes 值(虽然没有出现在我的sn-p 的第一行):
An unhandled exception of type 'System.ArgumentException' occurred in System.Drawing.dll
如果我将此代码放在try { } catch { } 子句中,它也可以正常工作(异常在日志中弹出大约 10 次后不再发生异常)。这当然不是一个很好的解决方案,有时它只是永远挂在那个异常中,在我重新启动应用程序之前根本不截屏。
我不知道为什么这些参数无效以及可能导致这种情况的原因。有什么想法吗?
【问题讨论】:
-
当你完成后你是否在你的位图上调用 Dispose(以及任何其他对它的引用)?
-
这确实“修复”了问题的一部分,现在我在通过 CopyFromScreen 的较长时间后内存不足。
标签: c# exception argumentexception