在我的程序中,很多时候我需要保存屏幕截图然后对其进行处理。此前,没有出现任何错误,并且可以正常工作几个小时。但现在我添加了以下方法:
private async Task CheckTable()
{
Image image = CaptureScreen(757, 476, 0, 0, size3);
image.Save(@"C:\ImageTests\screeeen.jpg", ImageFormat.Jpeg);
using (Tesseract tesseract = new Tesseract(@"C:\langs", "rus", OcrEngineMode.TesseractLstmCombined))
{
tesseract.SetImage(new Image<Bgr, byte>(@"C:\ImageTests\screeeen.jpg"));
tesseract.Recognize();
if (tesseract.GetUTF8Text().Replace("\r\n", "").Contains("Вы успешно") || tesseract.GetUTF8Text().Replace("\r\n", "").Contains("не доступен"))
{
return;
}
else
{
await Task.Delay(50);
await CheckTable();
}
}
}
并在如下代码中使用它:
var tableCheck = CheckTable();
await tableCheck;
tableCheck.Dispose();
然后在一段随机代码中,我还保存了照片,在一段时间后开始出现错误:
System.Runtime.InteropServices.ExternalException: "A generic error occurred in GDI+."
如何解决这个问题?