The TwainException class defines a Code property that you can examine to determine what caused the error.
Default messages are implemented for each Code, you can however modify any message through the GetCodeMessage and SetCodeMessage methods.
using Leadtools;
using Leadtools.Twain;
public void _twainSession_AcquirePage(object sender, TwainAcquirePageEventArgs e)
{
Application.DoEvents();
if (e.Image != null)
e.Image.Dispose();
e.Cancel = false;
}
public void TwainExceptionExample(IntPtr parent)
{
TwainSession session = null;
try
{
// initialize a new TWAIN session
session = new TwainSession();
session.Startup(parent, "manufacturer", "productFamily", "version", "application", TwainStartupFlags.None);
session.AcquirePage += new EventHandler<TwainAcquirePageEventArgs>(_twainSession_AcquirePage);
// acquire a page, if paper jam, allow the user to retry
bool done = false;
while (!done)
{
try
{
DialogResult res = session.Acquire(TwainUserInterfaceFlags.Modal | TwainUserInterfaceFlags.Show);
MessageBox.Show("Success");
done = true;
}
catch (TwainException ex)
{
if (ex.Code == TwainExceptionCode.PaperJam)
{
if (MessageBox.Show("Paper jam. Fix and retry?", "TWAIN", MessageBoxButtons.YesNo) == DialogResult.No)
done = true;
}
else
{
// other error, propogate
throw ex;
}
}
}
}
catch (TwainException ex)
{
MessageBox.Show(string.Format("Twain error:{0}Code: {1}{0}Message: {2}", Environment.NewLine, ex.Code, ex.Message));
}
catch (Exception ex)
{
MessageBox.Show(string.Format("Other error: Message:{0}", ex.Message));
}
finally
{
if (session != null)
session.Shutdown();
}
}