用户取消时 TWAIN 阻塞

Posted

技术标签:

【中文标题】用户取消时 TWAIN 阻塞【英文标题】:TWAIN blocks when user cancels 【发布时间】:2011-05-02 07:44:03 【问题描述】:

我在我的扫描应用程序中使用了Twain Dot Net 的略微修改版本。问题是,当用户使用扫描仪上的按钮取消扫描(或卡纸)时,TWAIN 应该显示错误消息并返回一些失败代码。

但是,相反,对DG_IMAGE / DAT_IMAGENATIVEXFER / MSG_GET 的调用以TWRC_XFERDONE 正确返回,但对DG_CONTROL / DAT_PENDINGXFERS / MSG_ENDXFER 的调用在此之后永远不会返回。我做错了什么?

应用程序是使用 WPF 编写的,TWAIN 的消息被发送到在其自己的线程上运行的仅消息窗口。扫描仪为松下 KV-S4065C。

【问题讨论】:

【参考方案1】:

我已经解决了。我不确定发生了什么,但是在同一个消息循环上运行所有 TWAIN 方法 TWAIN 设置为使用它。这也意味着拆分图像传输循环——在一次迭代完成后,它会将自己排入消息循环的队列中。

【讨论】:

您能否详细说明您的解决方案。我面临同样的问题。在我使用 DG_IMAGE / DAT_IMAGENATIVEXFER / MSG_GET 调用 DSM_Entry 的 msg 循环中,API 被阻止并且在扫描完成之前不会返回。 @ikis 对不起,8 年多过去了,除了我在上面的答案中写的内容之外,我不能给你更多的信息。

以上是关于用户取消时 TWAIN 阻塞的主要内容,如果未能解决你的问题,请参考以下文章

取消处于阻塞状态的任务的最佳方法是啥?

Socket编程中,阻塞与非阻塞的区别

取消与关闭

SIGINT 半阻塞可能吗?

IO-同步,异步,阻塞,非阻塞

IO模型介绍 以及同步异步阻塞非阻塞的区别