VintaSoft Twain .NET SDK 15.0: Documentation for .NET developer
Vintasoft.Twain Namespace / Device Class / CancelTransfer() Method
Syntax Exceptions Remarks Example Requirements SeeAlso
In This Topic
    CancelTransfer() Method (Device)
    In This Topic
    Sends the cancel current transfer command to the device (transfer will not be canceled right after execution of this method).
    Syntax
    'Declaration
    
    Public Sub CancelTransfer()
    
    
    public void CancelTransfer()
    
    
    public: void CancelTransfer()
    
    
    public:
    void CancelTransfer()
    Exceptions
    ExceptionDescription
    Thrown if the .NET debugger is used and the function evaluation requires all threads to run.
    Remarks

    Important: Transfer will not be canceled right after execution of this method, transfer will be canceled when the ScanCanceled event occurs or the AcquireModal method returns AcquireModalState.None.

    Example

    This C#/VB.NET code shows how to cancel current asynchronous image transfer.

    
    Class SyncScan_Cancel
    
            ''' <summary>
            ''' This method scans one image and cancels image scan.
            ''' </summary>
            Public Shared Sub ScanOneImageAndCancelScan()
                    Dim isScanCanceled As Boolean = False
    
                    ' create the device manager
                    Using deviceManager As New Vintasoft.Twain.DeviceManager()
                            deviceManager.IsTwain2Compatible = True
                            ' open the device manager
                            deviceManager.Open()
    
                            ' get the device
                            Dim deviceName As String = "KODAK Scanner: i5000"
                            Dim device As Vintasoft.Twain.Device = deviceManager.Devices.Find(deviceName)
                            If device Is Nothing Then
                                    Throw New ApplicationException(String.Format("Device '{0}' is not found.", deviceName))
                            End If
    
                            ' disable device UI
                            device.ShowUI = False
                            ' specify that device must be closed after scan
                            device.DisableAfterAcquire = True
    
                            ' open the device
                            device.Open()
                            ' specify that 2 images must be acquired from scanner
                            device.XferCount = 2
    
                            ' run asynchronous image acquisition
                            Dim acquireModalState1 As Vintasoft.Twain.AcquireModalState = Vintasoft.Twain.AcquireModalState.None
                            Do
                                    acquireModalState1 = device.AcquireModal()
                                    Select Case acquireModalState1
                                            Case Vintasoft.Twain.AcquireModalState.ImageAcquired
                                                    Console.WriteLine("Image is acquired.")
                                                    If device.AcquiredImage IsNot Nothing Then
                                                            device.AcquiredImage.Dispose()
                                                    End If
    
                                                    ' cancel image scan
                                                    device.CancelTransfer()
                                                    Exit Select
    
                                            Case Vintasoft.Twain.AcquireModalState.ScanCompleted
                                                    Console.WriteLine("Scan is completed.")
                                                    Exit Select
    
                                            Case Vintasoft.Twain.AcquireModalState.ScanCanceled
                                                    isScanCanceled = True
                                                    Console.WriteLine("Scan is canceled.")
                                                    Exit Select
    
                                            Case Vintasoft.Twain.AcquireModalState.ScanFailed
                                                    Console.WriteLine(String.Format("Scan is failed: {0}.", device.ErrorString))
                                                    Exit Select
                                    End Select
                            Loop While acquireModalState1 <> Vintasoft.Twain.AcquireModalState.None
    
                            If Not isScanCanceled Then
                                    Throw New ApplicationException("Scan is NOT canceled.")
                            End If
    
                            ' close the device
                            device.Close()
                    End Using
            End Sub
    
    End Class
    
    
    
    namespace TwainExamples_CSharp
    {
        class SyncScan_Cancel
        {
    
            /// <summary>
            /// This method scans one image and cancels image scan.
            /// </summary>
            public static void ScanOneImageAndCancelScan()
            {
                bool isScanCanceled = false;
    
                // create the device manager
                using (Vintasoft.Twain.DeviceManager deviceManager = new Vintasoft.Twain.DeviceManager())
                {
                    deviceManager.IsTwain2Compatible = true;
                    // open the device manager
                    deviceManager.Open();
    
                    // get the device
                    string deviceName = "KODAK Scanner: i5000";
                    Vintasoft.Twain.Device device = deviceManager.Devices.Find(deviceName);
                    if (device == null)
                        throw new System.ApplicationException(string.Format("Device '{0}' is not found.", deviceName));
    
                    // disable device UI
                    device.ShowUI = false;
                    // specify that device must be closed after scan
                    device.DisableAfterAcquire = true;
    
                    // open the device
                    device.Open();
                    // specify that 2 images must be acquired from scanner
                    device.XferCount = 2;
    
                    // run asynchronous image acquisition
                    Vintasoft.Twain.AcquireModalState acquireModalState = Vintasoft.Twain.AcquireModalState.None;
                    do
                    {
                        acquireModalState = device.AcquireModal();
                        switch (acquireModalState)
                        {
                            case Vintasoft.Twain.AcquireModalState.ImageAcquired:
                                System.Console.WriteLine("Image is acquired.");
                                if (device.AcquiredImage != null)
                                    device.AcquiredImage.Dispose();
    
                                // cancel image scan
                                device.CancelTransfer();
                                break;
    
                            case Vintasoft.Twain.AcquireModalState.ScanCompleted:
                                System.Console.WriteLine("Scan is completed.");
                                break;
    
                            case Vintasoft.Twain.AcquireModalState.ScanCanceled:
                                isScanCanceled = true;
                                System.Console.WriteLine("Scan is canceled.");
                                break;
    
                            case Vintasoft.Twain.AcquireModalState.ScanFailed:
                                System.Console.WriteLine(string.Format("Scan is failed: {0}.", device.ErrorString));
                                break;
                        }
                    }
                    while (acquireModalState != Vintasoft.Twain.AcquireModalState.None);
    
                    if (!isScanCanceled)
                        throw new System.ApplicationException("Scan is NOT canceled.");
    
                    // close the device
                    device.Close();
                }
            }
    
        }
    }
    
    

    Requirements

    Target Platforms: .NET 8, .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

    See Also