TwainDotNet Сканирование с использованием TWAIN с BackgroundWorker

Кто-нибудь пробовалTwainDotNet для сканирования с помощью вызовов TWAIN API из .NET? Хотя это работает хорошо, обычно у меня есть некоторые проблемы с ним при использовании вместе с приложением WPF, использующим MVVM. По сути, я вызываю функции сканирования Twain из службы, которая, в свою очередь, использует BackgroundWorker.

List<BitmapSource> bitmapSources = new List<BitmapSource>();
Twain twain = new Twain(new WpfWindowMessageHook(_window));
ScanSettings settings = new ScanSettings() { ShowTwainUI = false };
using (BackgroundWorker worker = new BackgroundWorker())
{
    worker.DoWork += (sndr, evnt) =>
    {
        AutoResetEvent waitHandle = new AutoResetEvent(false);
        EventHandler scanCompleteHandler = (se, ev) => { waitHandle.Set(); };
        twain.ScanningComplete += scanCompleteHandler;
        twain.StartScanning(settings);
        waitHandle.WaitOne();

        if (twain.Images.Count > 0)
        {
            foreach (var image in twain.Images)
            {
                BitmapSource bitmapSource = Imaging.CreateBitmapSourceFromHBitmap(new Bitmap(image).GetHbitmap(),
                    IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
                bitmapSources.Add(bitmapSource);
            }
        }
    };
    worker.RunWorkerCompleted += (sndr, evnt) => { image1.Source = bitmapSources[0]; };
    worker.RunWorkerAsync();
}

Обработчик события ScanningComplete никогда не запускается, когда мы работаем с BackgroundWorker. Любые предложения по решению этой проблемы?

Ответы на вопрос(2)

Ваш ответ на вопрос