Escaneo TwainDotNet usando TWAIN con BackgroundWorker

¿Alguien ha intentadoTwainDotNet para escanear con llamadas API TWAIN desde .NET? Aunque funciona bien, generalmente tengo algunos problemas cuando se usa junto con la aplicación WPF que usa MVVM. Básicamente, estoy llamando a las funciones de escaneo de Twain desde un Servicio, que a su vez usa un 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();
}

El controlador de eventos ScanningComplete nunca se activa cuando estamos trabajando con un BackgroundWorker. ¿Alguna sugerencia para resolver este problema?