如何在 Twain 中关闭设备 UI

How to close device in Twain UI

我遇到了当前的问题。使用 Twain UI 如果我单击取消,它不会捕获异常并且不会关闭设备。如果我再次打开 UI 并单击扫描,它不会让我打开它保持关闭状态的设备,当前异常:设备未打开错误代码:11.

    Public Sub AcquireImage()
    OpenDeviceManager()
    Dim device As Vintasoft.Twain.Device = devManager.Devices.Find("KODAK Scanner: i1150/i1180")

    Try
        snCount = 0
        imgCount = 0

        device.ShowUI = True
        device.Open() ''PROBLEM IS HERE


        device.PixelType = PixelType.Gray
        device.Acquire()

        AddHandler device.ImageAcquired, AddressOf device_ImageAcquired
        AddHandler device.ScanCompleted, AddressOf device_ScanCompleted
        AddHandler device.ScanCanceled, AddressOf device_ScanCanceled
        AddHandler device.ScanFailed, AddressOf device_ScanFailed

        device.DisableAfterAcquire = True


    Catch ex As TwainException
        MessageBox.Show(ex.Message) '' Device is not opened Error code: 11
        CloseDevice(device)

        device.Disable()



        Return
    End Try



End Sub

我可以扫描任意多次,但我想在 UI 上使用取消,设备状态不会更改值。

我通过 为 device.UserInterfaceClosed 添加和删除处理程序解决了这个问题。

Private Sub AcquireImage()
    SetFormUiState(False)
    OpenDeviceManager()
    Dim device As Vintasoft.Twain.Device = devManager.Devices.Find("KODAK Scanner: i1150/i1180")

    Try

        AddHandler device.ImageAcquired, AddressOf device_ImageAcquired
        AddHandler device.ScanCompleted, AddressOf device_ScanCompleted
        AddHandler device.ScanCanceled, AddressOf device_ScanCanceled
        AddHandler device.ScanFailed, AddressOf device_ScanFailed
        **AddHandler device.UserInterfaceClosed, AddressOf device_UserInterfaceClosed**

        snCount = 0
        imgCount = 0

        device.Open()
        device.ShowUI = True
        device.PixelType = PixelType.Gray
        device.Acquire()
        device.DisableAfterAcquire = True

    Catch ex As TwainException
        MessageBox.Show(ex.Message)
        SetFormUiState(True)
        CloseDevice(device)
        Return
    End Try
End Sub