Сканер не может возвратить два связанных исключения во время процесса сканирования клиенту - PullRequest
0 голосов
/ 17 апреля 2019

Я использую библиотеку saraff twain. Сканер должен возвращать исключения во время процесса сканирования клиенту. Так, например, если фидер сканера тянет две страницы (или больше) одновременно, он выдаст исключение. Однако, когда я попробовал библиотеку, я не смог поймать эти исключения.

Вот мой код:

   public Stream Acquire(Source source, IEnumerable<CapEnum> caps)
   {

       try
          {
            var _formatter = new BinaryFormatter();

            var _result = new MemoryStream();
            var _images = new List<System.Drawing.Image>();
            TwainExternalProcess.Execute(
                TwainService._GetExecFileName(source),
                twain =>
                {

                    twain.EndXfer += (sender, e) => _images.Add(e.Image);
                    twain.SourceIndex = source.Id;
                    twain.OpenDataSource();

                    foreach (var _cap in caps)
                    {

                        using (var _stream = new MemoryStream(_cap.Current.RawValue))
                        {
                            twain.SetCap(_cap.Cap, _formatter.Deserialize(_stream));
                        }
                    }

                        twain.Acquire();
                });
            var _params = new EncoderParameters(2);
            _params.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)EncoderValue.CompressionNone);
            _params.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.MultiFrame);

           _images[0].Save(
               _result, ImageCodecInfo.GetImageEncoders().First(x => x.MimeType == "image/tiff"), _params);

            _params.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, (long)EncoderValue.FrameDimensionPage);
             for (int i = 0; i < _images.Count; i++)
             {
                  _images[0].SaveAdd(_images[i], _params);
             }
            foreach (var _image in _images)
            {
                _image.Dispose();
            }

           _result.Seek(0, SeekOrigin.Begin);
            return _result;
        }catch(TwainException twainException)
        {
            throw twainException;

        }
        catch (Exception ex)
        {

            throw new FaultException(ex.Message);
        }

}

Я ожидал, что метод должен вызвать исключение в случае PaperJam, Double Paper Feeded .... Однако я не смог поймать исключения.

Не могли бы вы дать мне представление о том, что мне не хватает? Я использую сканер Canon DR-C240.

...