VintaSoft Twain .NET SDK 15.4: Documentation for .NET developer
Vintasoft.WpfTwain Namespace / Device Class / EndOfJob Property
Syntax Remarks Example Requirements SeeAlso
In This Topic
EndOfJob Property (Device)
In This Topic
Detects the end of batch job.
Syntax
'Declaration

<BrowsableAttribute(False)>
<ReadOnlyAttribute(True)>
Public ReadOnly Property EndOfJob As Boolean

[Browsable(False)]
[ReadOnly(True)]
public bool EndOfJob { get; }

Property Value

true - end of batch job was reached; false otherwise.
Remarks

Value of this property is valid only:

Example

This C#/VB.NET code shows how to detect job separators during scanning.


Private _deviceManager As Vintasoft.Twain.DeviceManager
Private _device As Vintasoft.Twain.Device
Private _jobCounter As Integer = -1

Public Sub ScanImageWithJobControl()
    Try
        ' create and open device manager
        _deviceManager = New Vintasoft.Twain.DeviceManager()
        _deviceManager.Open()

        ' get reference to the default device
        _device = _deviceManager.DefaultDevice
        ' subscribe to device events
        AddHandler _device.ImageAcquired, New System.EventHandler(Of Vintasoft.Twain.ImageAcquiredEventArgs)(AddressOf _device1_ImageAcquired)
        AddHandler _device.ScanCompleted, New System.EventHandler(AddressOf _device1_ScanCompleted)
        AddHandler _device.ScanCanceled, New System.EventHandler(AddressOf _device1_ScanCanceled)
        AddHandler _device.ScanFailed, New System.EventHandler(Of Vintasoft.Twain.ScanFailedEventArgs)(AddressOf _device1_ScanFailed)
        AddHandler _device.ScanFinished, New System.EventHandler(AddressOf _device_ScanFinished)

        _device.ShowUI = False
        _device.DisableAfterAcquire = True

        ' open the device
        _device.Open()

        ' set scanning settings
        _device.JobControl = Vintasoft.Twain.JobControl.DetectAndIncludeJobSeparatorAndContinueScanning
        _jobCounter = _jobCounter + 1

        ' acquire images from device
        _device.Acquire()
    Catch ex As Vintasoft.Twain.TwainException
        System.Console.WriteLine(ex.Message)
    End Try
End Sub

Private Sub _device1_ImageAcquired(sender As Object, e As Vintasoft.Twain.ImageAcquiredEventArgs)
    If _device.EndOfJob Then
        _jobCounter = _jobCounter + 1
    Else
        Try
            ' save the acquired image
            e.Image.Save(String.Format("c:\job{0}.tif", _jobCounter))

            ' dispose the acquired image
            e.Image.Dispose()
        Catch ex As System.Exception
            System.Console.WriteLine(ex.Message)
        End Try
    End If
End Sub

Private Sub _device1_ScanCompleted(sender As Object, e As System.EventArgs)
    System.Console.WriteLine("Scan is completed.")
End Sub

Private Sub _device1_ScanCanceled(sender As Object, e As System.EventArgs)
    System.Console.WriteLine("Scan is canceled.")
End Sub

Private Sub _device1_ScanFailed(sender As Object, e As Vintasoft.Twain.ScanFailedEventArgs)
    System.Console.WriteLine(String.Format("Scan is failed: {0}", e.ErrorString))
End Sub

Private Sub _device_ScanFinished(sender As Object, e As System.EventArgs)
    ' close the device
    _device.Close()
End Sub


Vintasoft.Twain.DeviceManager _deviceManager;
Vintasoft.Twain.Device _device;
int _jobCounter = -1;

public void ScanImageWithJobControl()
{
    try
    {
        // create and open device manager
        _deviceManager = new Vintasoft.Twain.DeviceManager();
        _deviceManager.Open();

        // get reference to the default device
        _device = _deviceManager.DefaultDevice;
        // subscribe to device events
        _device.ImageAcquired += new System.EventHandler<Vintasoft.Twain.ImageAcquiredEventArgs>(_device1_ImageAcquired);
        _device.ScanCompleted += new System.EventHandler(_device1_ScanCompleted);
        _device.ScanCanceled += new System.EventHandler(_device1_ScanCanceled);
        _device.ScanFailed += new System.EventHandler<Vintasoft.Twain.ScanFailedEventArgs>(_device1_ScanFailed);
        _device.ScanFinished += new System.EventHandler(_device_ScanFinished);

        _device.ShowUI = false;
        _device.DisableAfterAcquire = true;

        // open the device
        _device.Open();

        // set scanning settings
        _device.JobControl = Vintasoft.Twain.JobControl.DetectAndIncludeJobSeparatorAndContinueScanning;
        _jobCounter = _jobCounter + 1;

        // acquire images from device
        _device.Acquire();
    }
    catch (Vintasoft.Twain.TwainException ex)
    {
        System.Console.WriteLine(ex.Message);
    }
}

private void _device1_ImageAcquired(object sender, Vintasoft.Twain.ImageAcquiredEventArgs e)
{
    if (_device.EndOfJob)
        _jobCounter = _jobCounter + 1;
    else
    {
        try
        {
            // save the acquired image
            e.Image.Save(string.Format(@"c:\job{0}.tif", _jobCounter));

            // dispose the acquired image
            e.Image.Dispose();
        }
        catch (System.Exception ex)
        {
            System.Console.WriteLine(ex.Message);
        }
    }
}

private void _device1_ScanCompleted(object sender, System.EventArgs e)
{
    System.Console.WriteLine("Scan is completed.");
}

private void _device1_ScanCanceled(object sender, System.EventArgs e)
{
    System.Console.WriteLine("Scan is canceled.");
}

private void _device1_ScanFailed(object sender, Vintasoft.Twain.ScanFailedEventArgs e)
{
    System.Console.WriteLine(string.Format("Scan is failed: {0}", e.ErrorString));
}

void _device_ScanFinished(object sender, System.EventArgs e)
{
    // close the device
    _device.Close();
}

Requirements

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

See Also