Announcement

Collapse
No announcement yet.

Exception + Neue Form = Katastrophe?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Exception + Neue Form = Katastrophe?

    Guten Morgen liebe Community!
    Ich sitze hier jetzt schon eine ganze Weile vor einem Problem, was sich mir nicht richtig erschließen will.

    Zum Stand der Dinge:

    Ich habe eine 'Status' Variable (Integer), eine Form, die über eine Prozedur eine Verbindung via FTP zu einem Server herstellt und dort eine XML Datei ergänzt. Das ganze läuft über einen Backgroundworker. Soweit so gut.

    Um es Anschaulicher zu gestalten:

    Code:
    Public Class frmConnect
        Dim Status As Integer = 0 'Statuswerte
    Code:
        Private Sub frmConnect_Load(...) Handles MyBase.Load
            BackgroundWorker1.WorkerReportsProgress = True
            BackgroundWorker1.RunWorkerAsync()
        End Sub
    Es folgt die Methode, die ab und an neue Werte zu 'Status' zuweist, je nachdem wie "weit" die Prozedur nun schon ist.
    (0 - Startwert, 1 - Verbindung hergestellt, 2 - Datei manipuliert)

    Code:
            Stream = Client.OpenRead(URL + Pfad)
    
            'Status 1 = Verbindung hergestellt
            Status = 1
            BackgroundWorker1.ReportProgress(1, Status) 'Status übermitteln
    Da das ganze auch Fehler werfen kann, wird ist sie innerhalb eines Try-Catch Blockes und wenn nun ein Fehler kommt (Keine Schreibrechte, Server offline), dann wird erst, je nachdem wo die Prozedur schon war, eine MsgBox angezeigt und dann Status = 99 zugewiesen. Bei keine Fehler wird 100 zugewiesen.

    Und jetzt das Problem:

    Code:
        Private Sub BackgroundWorker1_RunWorkerCompleted(...) Handles BackgroundWorker1.RunWorkerCompleted
    
            If Status = 99 Then 'Funktioniert nicht
                Dim Form As New frmÜberprüfen
                Form.Show()
            ElseIf Status = 100 Then 'Funktioniert
                Dim Login As New frmLogin
                Login.Show()
            End If
    
        End Sub
    Wenn 'Status' = 99 ist und ich die neue Form haben möchte, dann kommt eine TargetInvocationException, die mir nicht allzu viel sagt. Bei 'Status' = 100 funktioniert es wie gewollt.

    Und jetzt noch einer drauf: Wenn ich den Server abschalte (Status = 99 dann) kommt der Fehler. Wenn ich nur die Schreibrechte entferne (Status ebenfalls = 99) dann funktioniert alles.

    Ich hoffe ihr konntet mein Problem nachvollziehen und habt einen Ratschlag für mich. Bis dahin wünsche ich noch eine angenehme Nacht bzw. guten Morgen.

    MfG Myst

    PS: Es sind natürlich nur Teile des Codes abgebildet, da es sonst zu viel wäre, denke ich. Ich hoffe ich habe alles relevante gepostet.

  • #2
    Hallo,

    ich würde mit einem Try - Catch versuchen der Ursache auf den Grund zu gehen.

    Code:
    Private Sub BackgroundWorker1_RunWorkerCompleted(...) Handles BackgroundWorker1.RunWorkerCompleted
    
    Try
            If Status = 99 Then 'Funktioniert nicht
                Dim Form As New frmÜberprüfen
                Form.Show()
            ElseIf Status = 100 Then 'Funktioniert
                Dim Login As New frmLogin
                Login.Show()
            End If
    Catch ex as System.Reflection.TargetInvocationException
    messagebox.show(ex.innerexception.message.tostring)
    end try
        End Sub
    Gruß
    Christian

    Comment


    • #3
      Eine TargetInvocationException kapselt üblicherweise die eigentlich aufgetretene Exception. Sieh dir also mal die InnerException der Exception an vielleicht verrät die mehr über das Problem.

      Edit: ich hätte mir cb4866 code ansehen sollen. Selber Vorschlag. Sorry

      Comment

      Working...
      X