我有一个在计时器上调用的函数。然后使用屏幕截图检查某些像素的颜色。如果相关,我也在使用与Arduino的串行通信。
private Bitmap Screenshot()
{
Bitmap bmpScreenshot;
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);
return bmpScreenshot;
}
我遇到的问题是,在运行一段时间后,我收到以下错误:
“System.ComponentModel.Win32Exception”类型的未处理异常 发生在System.Drawing.dll
中
其他信息:重叠的I / O操作正在进行中
我无法在任何地方找到它的来源或如何解决它,任何帮助都会很棒。
感谢。
答案 0 :(得分:0)
如果您没有正确处理其资源,则Graphics是一个已知具有奇怪行为的类。您需要处理在方法中创建的Graphics对象。
private Bitmap Screenshot()
{
Bitmap bmpScreenshot;
bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height);
using(Graphics g = Graphics.FromImage(bmpScreenshot))
{
g.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size);
return bmpScreenshot;
}
}
另外一定要确保在完成调用后也将Bitmap
部署在调用函数中。
我不知道这是否可以解决您的问题,但它可能会解决问题。