使用Epson DS-410通过WIA双面扫描时出现OutOfMemoryException
解决Epson DS-410 WIA双面扫描OutOfMemoryException问题
核心修复步骤
- 移除强制设置
WIA_DPS_PAGES为1的代码:双面扫描时扫描仪会生成2页图像,硬设页数为1会导致WIA驱动数据处理冲突,引发内存异常。 - 改用
ShowDialog()处理多页扫描:ShowTransfer()更适配单页场景,多页(双面)扫描时ShowDialog()能正确返回图像集合,避免内存溢出。
修改后的代码示例
if(documentHandlingSelect != null) { int handlingValue = 0; if(feederActivate) handlingValue |= (int)WIA_DPS_DOCUMENT_HANDLING_SELECT.FEEDER; if(duplexActive) handlingValue |= (int)WIA_DPS_DOCUMENT_HANDLING_SELECT.DUPLEX; documentHandlingSelect.set_Value(handlingValue); } // 移除这行强制设置页数的代码:SetWIAProperty(device.Properties, WIA_DPS_PAGES, 1); WIA.ICommonDialog wiaCommonDialog = new WIA.CommonDialog(); WIA.DialogResult dialogResult = wiaCommonDialog.ShowDialog(device); if(dialogResult == WIA.DialogResult.OK) { // 遍历所有扫描得到的图像(双面模式下会返回2张) foreach(WIA.ImageFile image in wiaCommonDialog.Items) { string fileName = Path.GetTempFileName(); File.Delete(fileName); image.SaveFile(fileName); // 此处添加你的后续处理逻辑 } }
额外检查点
- 确认安装Epson官网最新版WIA驱动,旧驱动可能存在双面扫描的兼容性bug。
- 不要手动干预页数配置,让驱动根据
DUPLEX模式自动识别并处理页数。
内容的提问来源于stack exchange,提问作者Nick Burger
相关产品推荐
相关产品推荐

