none
Wie finde ich heraus, auf welcher Datei ein StreamReader basiert? RRS feed

  • Allgemeine Diskussion

  • Hallo,

     

    ich habe folgendes Problem: Zum Debuggen muss ich herausfinden, welche Datei meine Applikation als StandardError verwendet. Ich bekomme zwar eine Referenz auf den STDERR des aktuellen Prozesses so:

     

    Dim prc As Process = System.Diagnostics.Process.GetCurrentProcess()
    Dim stdErr As System.IO.StreamReader = prc.StandardError
    


    Wie bekomme ich nun heraus, welche Datei dem stdErr zugrundeliegt? Leider hat das Objekt scheinbar keine Refernz auf die Datei. Ueber den BaseStream geht es auch.

    Hat jemand eine Idee? Gibt es einen anderen Weg herauszufinden, wo die Log-Datei fuer STDERR liegt?

     

    Schoenen Gruss,

     

    Martin

     

     

    Dienstag, 27. September 2011 06:33

Alle Antworten

  • Schonmal so versucht?

     

    Dim f As IO.FileStream = CType(stdErr.BaseStream,  IO.FileStream)
    MsgBox(f.Name)

     

    Dienstag, 27. September 2011 08:52
  • Danke fuer den Tipp. Ich bekomme bei der Zeile

    Dim stdErr As System.IO.StreamReader = prc.StandardError

    die folgende Fehlermeldung:

    InvalidOperationException {"StandardError wurde nicht umgeleitet."}

       bei System.Diagnostics.Process.get_StandardError()
       bei Login(String Username, String Password, String MACAddress, String EditorID) in C:\Users\app.vb:Zeile 38.
       bei SyncInvokeLogin(Object , Object[] , Object[] )
       bei System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
       bei System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)

     

    Funktioniert leider nicht. Wie kann es sein, dass ich an den STDERR nur herankommen wenn ich ihn umleite? Das ergibt doch keinen Sinn, oder?

     

    Gruss,

     

    Martin

    Dienstag, 27. September 2011 11:45
  • Es wird noch eigenartiger. Selbst wenn ich den STDERR umleite, bekomme ich die InvalidOperationException.  

     

            Dim prc As Process = System.Diagnostics.Process.GetCurrentProcess()
            prc.StartInfo.RedirectStandardError = True
            prc.StartInfo.UseShellExecute = False
    

    Wie komme ich an den output vom Stderr ran??

    M

    Dienstag, 27. September 2011 12:49
  • Hallo mwunderlich2,

    Kannst Du mal den ganzen Code hier posten, damit man sieht wo der Prozess gestartet wird?

    Ein paar links zum lesen:

    Prozesse starten überwachen und beenden mit VB .NET

    Process.StandardError Property

    Danke und Grüße,

    Robert

    Montag, 3. Oktober 2011 13:37
    Moderator
  • ****************************************************************************************************************
    Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.
    Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.
    ****************************************************************************************************************
    Donnerstag, 6. Oktober 2011 14:59
    Moderator