Cancelling scan causes application freeze
Posted: Fri Dec 04, 2015 5:33 pm
Hello VS-Team,
first thread was deleted in error, so another one.
Problem: When cancelling the scan process in the scanner driver's progress dialog, the application does not respond anymore. It seems that the method-call of "AcquireModal" does not return in this case (the switch-line is never reached). Here is the code:
I've also tried this using the async-scanning method, but the behaviour is identical (none of the event-procedures are called). The application freezes, and the main window is disabled.
The twain debug log:
Scanner is a HP scanjet 5590. When scanning through another twain application (like twacker from twain.org), the problem does not occur.
What can possible cause this behaviour?
Thank you for your support.
Best regards,
Daniel
first thread was deleted in error, so another one.
Problem: When cancelling the scan process in the scanner driver's progress dialog, the application does not respond anymore. It seems that the method-call of "AcquireModal" does not return in this case (the switch-line is never reached). Here is the code:
Code: Select all
bool bFinished = false;
Device deScan = null;
DeviceManager dmScan = null;
AcquireModalState amsScan;
try
{
TwainEnvironment.EnableDebugging(@"c:\vstwain.log");
dmScan = new DeviceManager(this);
dmScan.Open();
dmScan.ShowDefaultDeviceSelectionDialog();
deScan = dmScan.DefaultDevice;
deScan.Open();
deScan.ShowUI = false;
deScan.ModalUI = true;
deScan.ShowIndicators = true;
deScan.DisableAfterAcquire = true;
deScan.TransferMode = Vintasoft.Twain.TransferMode.Native;
deScan.DocumentFeeder.Enabled = true;
deScan.PixelType = Vintasoft.Twain.PixelType.BW;
deScan.Resolution = new Resolution(150, 150);
do
{
amsScan = deScan.AcquireModal();
switch (amsScan)
{
case AcquireModalState.ImageAcquired:
deScan.AcquiredImage.Dispose();
break;
case AcquireModalState.ScanCanceled:
case AcquireModalState.ScanCompleted:
case AcquireModalState.ScanFailed:
case AcquireModalState.UserInterfaceClosed:
case AcquireModalState.None:
bFinished = true;
break;
}
}
while (!bFinished);
MessageBox.Show("Finished");
}
catch (Exception eError)
{
MessageBox.Show(eError.Message);
}
finally
{
if (deScan != null && deScan.State != DeviceState.Closed)
{
deScan.Close();
deScan.Dispose();
}
if (dmScan != null && dmScan.State != DeviceManagerState.Closed)
{
dmScan.Close();
dmScan.Dispose();
}
}
The twain debug log:
Code: Select all
24.11.2015 16:18:28 29,532,160 Debugging enabled [9.1.5.1]
24.11.2015 16:18:28 29,585,408 Device manager is opening PathToDSM=C:\Windows\TWAIN_32.DLL
24.11.2015 16:18:28 29,593,600 DeviceManagerStateChanged Closed => Loaded
24.11.2015 16:18:28 29,593,600 DeviceManagerStateChanged Loaded => Opened
24.11.2015 16:18:28 29,593,600 Device manager is opened
24.11.2015 16:18:29 29,798,400 Device is opening
24.11.2015 16:18:30 31,526,912 DeviceStateChanged Closed => Opened
24.11.2015 16:18:30 31,535,104 Device is opened: Id(52), Version(1, 0, 13, 1, December, 2001), Protocol(1.9), Groups(3), Manuf(Hewlett-Packard), ProdFamily(All-in-One), ProdName(hp scanjet 5590 TWAIN)
24.11.2015 16:18:30 31,653,888 Getting value of capability Name=SupportedCaps Method=Get
24.11.2015 16:18:30 31,682,560 UsageMode=Get
24.11.2015 16:18:30 31,682,560 ContainerType=Array
24.11.2015 16:18:30 31,711,232 ValueType=UInt16
24.11.2015 16:18:30 31,715,328 Capability value is received
24.11.2015 16:18:30 31,752,192 Getting value of capability Name=FeederEnabled Method=GetCurrent
24.11.2015 16:18:30 31,752,192 UsageMode=Get, Set, GetDefault, Reset
24.11.2015 16:18:30 31,752,192 ContainerType=OneValue
24.11.2015 16:18:30 31,752,192 ValueType=Bool CurrentValue=True
24.11.2015 16:18:30 31,760,384 Capability value is received
24.11.2015 16:18:30 31,772,672 Setting value of capability Name=FeederEnabled ValueType=System.Boolean Value=True
24.11.2015 16:18:30 31,797,248 Result: Success
24.11.2015 16:18:30 31,797,248 Capability value is set
24.11.2015 16:18:30 31,817,728 Setting value of capability Name=IPixelType ValueType=System.UInt16 Value=0
24.11.2015 16:18:30 31,817,728 Result: Success
24.11.2015 16:18:30 31,817,728 Capability value is set
24.11.2015 16:18:30 31,825,920 Setting value of capability Name=IXResolution ValueType=System.Single Value=150
24.11.2015 16:18:30 31,838,208 Result: Success
24.11.2015 16:18:30 31,838,208 Capability value is set
24.11.2015 16:18:30 31,838,208 Setting value of capability Name=IYResolution ValueType=System.Single Value=150
24.11.2015 16:18:30 31,846,400 Result: Success
24.11.2015 16:18:30 31,846,400 Capability value is set
24.11.2015 16:18:30 31,907,840 Getting value of capability Name=Indicators Method=GetCurrent
24.11.2015 16:18:30 31,916,032 UsageMode=Get, Set, GetDefault, Reset
24.11.2015 16:18:30 31,916,032 ContainerType=OneValue
24.11.2015 16:18:30 31,916,032 ValueType=Bool CurrentValue=True
24.11.2015 16:18:30 31,924,224 Capability value is received
24.11.2015 16:18:30 31,924,224 Getting value of capability Name=IXferMech Method=GetCurrent
24.11.2015 16:18:30 31,924,224 UsageMode=Get, Set, GetDefault, Reset
24.11.2015 16:18:30 31,924,224 ContainerType=OneValue
24.11.2015 16:18:30 31,924,224 ValueType=UInt16 CurrentValue=0
24.11.2015 16:18:30 31,932,416 Capability value is received
24.11.2015 16:18:30 31,940,608 Device is enabling ShowUI=False ModalUI=True
24.11.2015 16:19:05 32,030,720 DeviceStateChanged Opened => Enabled
24.11.2015 16:19:05 35,921,920 Received request to close the device
What can possible cause this behaviour?
Thank you for your support.
Best regards,
Daniel