为了账号安全,请及时绑定邮箱和手机立即绑定

防止扫描仪冻结程序

防止扫描仪冻结程序

C#
慕森王 2022-08-20 16:17:16
我目前正在开发一个模块,用户可以在其中扫描文档并保存它们。目前,正在使用的工作代码来自Jeske,来自GitHub(链接在这里)。客户使用的扫描仪是:爱普生完美V600。前面提到的代码就像一个魅力,预计会出现1种情况:如果扫描仪进入睡眠/非活动模式,并且用户尝试在该状态下扫描文档,则应用程序将在等待扫描仪响应时自行冻结(有时它确实如此,有时它没有)。确切地说,程序冻结在此特定行:WIA.ImageFile image = (WIA.ImageFile)wiaCommonDialog.ShowTransfer(item, wiaFormatBMP, false);我的问题是:有没有办法防止应用程序在尝试从给定的扫描仪扫描时冻结?(仅当扫描仪处于睡眠/非活动模式时,才会发生此问题)
查看完整描述

1 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

您可以使用并发来防止阻塞。如果每当操作未结束时,您也可以将 CancelToken 与 CancelTokenSource 一起使用,则可以向您的功能发送取消信号,以便中止扫描操作。


public Task Scan()

{

    ....

    WIA.ImageFile image = (WIA.ImageFile)wiaCommonDialog.ShowTransfer(item, wiaFormatBMP, false);

    ...

}

然后在您的主程序中


//wait 20 seconds before cancellation

CancellationTokenSource cts=  new CancellationTokenSource(20000);

var myTask = Task.Run(() => Scan(),  cts.Token);

await myTask;


查看完整回答
反对 回复 2022-08-20
  • 1 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号