twain.net crashed, wenn Scanner ausgeschaltet ist

  • VB.NET
  • .NET 4.0

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von tragl.

    twain.net crashed, wenn Scanner ausgeschaltet ist

    Hallo zusammen.
    ich arbeite seit kurzem sehr gerne mit TwainDotNet - heute war ich allerdings mal schusselig und hab vergessen den
    Scanner einzuschalten, bevor ich ihn durch mein Programm nutzen wollte. Zack, da kam es zu einer TwainException und das Programm
    ist gecrashed.

    Hat jemand schon mit TwainDotNet gearbeitet und kann mir sagen wie ich das korrekt abfangen kann?
    Mein Vorschlag wäre: ist der urspr. gewählte Scanner nicht eingeschaltet oder erreichbar, dann sollte der Quellen-Auswahl-Dialog
    _twain.SelectSource() aufgerufen werden. dann nochmal _twain deklarieren.

    Zur Überbrückung hab ich das über Try..Catch gelöst, allerdings lädt er mir trotz Exception den DLG durch - ist so auch nicht
    Sinn und Zweck.

    LG

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports TwainDotNet, TwainDotNet.TwainNative, TwainDotNet.WinFroms
    2. Imports PdfSharp.Pdf
    3. Imports System.Drawing.Imaging
    4. Public Class dlgTwain
    5. Private _areaSettings As New AreaSettings(Units.Centimeters, 0.1F, 5.7F, 0.1F + 2.6F, 5.7F + 2.6F)
    6. Private _twain As Twain
    7. Private _settings As ScanSettings
    8. Private _images As List(Of Bitmap)
    9. Public _pdfDoc As PdfDocument = Nothing
    10. #Region "Form"
    11. Public Sub New()
    12. InitializeComponent()
    13. Me.KeyPreview = True
    14. Me.RegisterDlgKeyHandler
    15. RemoveHandler SplitContainer1.SplitterMoved, AddressOf SplitContainer1_SplitterMoved
    16. Try
    17. _twain = New Twain(New WinFormsWindowMessageHook(Me)) '<- hier kommt die Exception, wenn der Scanner ausgeschaltet / nicht erreichbar ist.
    18. 'TODO: Abfangen, wenn urspr. gewählter Scanner ausgeschaltet / nicht erreichbar ist - es muss dann ein Dialog zur Auswahl eines Anderen gezeigt werden.
    19. 'Aus Stacktrace:
    20. 'TwainException
    21. 'bei TwainDotNet.DataSource.GetDefault(Identity applicationId, IWindowsMessageHook messageHook)
    22. 'bei TwainDotNet.DataSourceManager..ctor(Identity applicationId, IWindowsMessageHook messageHook)
    23. 'bei TwainDotNet.Twain..ctor(IWindowsMessageHook messageHook)
    24. ' Add a handler to grab each image as it comes off the scanner
    25. AddHandler _twain.TransferImage, Sub(sender As Object, args As TwainDotNet.TransferImageEventArgs)
    26. If (Not (args.Image Is Nothing)) Then
    27. PictureBox1.Image = args.Image
    28. _images.Add(args.Image)
    29. dgv_AddImg(args.Image)
    30. End If
    31. End Sub
    32. ' Re-enable the form after scanning completes
    33. AddHandler _twain.ScanningComplete, Sub(sender As Object, e As TwainDotNet.ScanningCompleteEventArgs)
    34. savePdf()
    35. Enabled = True
    36. End Sub
    37. PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
    38. 'TODO: aktuelle source anzeigen
    39. dgv_settings()
    40. Catch ex As TwainException '<- Übergangslösung, damit Programm nicht crashed. Der Dialog(Me) wird leider trotzdem angezeigt
    41. msgEx(ex, "Der urspr. Scanner scheint nicht erreichbar. Ausgeschaltet?")
    42. Return '<- dlg soll eigentlich schließen...
    43. End Try
    44. End Sub
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    Am Ende einer Sub (auch wenn es im Catch-Block ist) Return zu schreiben, bringt nicht sonderlich viel. Um genau zu sein: gar nichts.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hab' das Problem nun umgehen können. Stimmt was mit dem Scanner nicht, bekommt der User 'ne Messagebox und kann im Anschluss einen anderen wählen oder eben den Dlg schließen und eben
    nicht scannen :P
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup: