2017-11-17 1 views
-1

In meinem Code versuche ich eine Datei mit File.Open() mit relativen Pfad zu lesen. Aber manchmal wird das aktuelle Verzeichnis geändert und Verzeichnis nicht gefunden Ausnahme kommt.Gibt es ein Ereignis zu benachrichtigen, wenn Environment.CurrentDirectory geändert wurde?

Ich versuche herauszufinden, wo Environment.CurrentDirectory geändert wird. Ich überprüfte die Directory.SetCurrentDirectory Methode, aber seinen Aufruf zur nativen Methode.

Gibt es ein Ereignis, das mich benachrichtigt, wenn Environment.CurrentDirectory geändert hat? Wie finde ich heraus, wo genau das Verzeichnis geändert wurde?

Ich habe versucht, Break-Point in allen Auftreten von Environment.CurrentDirectory und Directory.SetCurrentDirectory() setzen.

+1

Brauchen Sie ein bisschen mehr Kontext. Vermutlich ist es Ihr Code, daher sind alle Änderungen am Verzeichnis beabsichtigt. Ich würde weiter nach Anrufen suchen, um es zu ändern. –

+0

@dan Manche Leute ziehen es vielleicht nicht in Betracht, den Dialog zum Öffnen von Dateien als absichtlichen Aufruf zum Ändern des aktuellen Ordners zu verwenden. –

+0

Nein. Bei weitem ist das beste, was man tun kann, es nie zu benutzen. Du brauchst es nie. –

Antwort

0

Es ist notwendig, weitere Details, ich habe nie gesehen, dass dieses Attribut während der Laufzeit ändert.

  1. Wenn Sie die ausführbare Datei über das Startmenü oder eine andere Verknüpfung ausführen, wird das aktuelle Verzeichnis geändert, überprüfen Sie die Eigenschaft "Startet in".

    1. Wenn Sie eine Clickonce-Anwendung bereitstellen, wurde jede Version in anderen Ordner installiert, und Sie werden die Dateien nicht in demselben ausführbaren Ordner gespeichert finden.

    2. Ich habe einige Referenzen gefunden, dass OpenFileDialogs (und opendirectorydialog) das Environment.CurrentDirectory ändert.

Quelle: OpenFileDialog and Environment.CurrentDirectory

+0

Gefühle wie dieser Beitrag beantwortet eine andere Interpretation von "aktuellen Verzeichnisänderungen". –

0

Nein, aber Sie können überprüfen, ob das aktuelle Verzeichnis vor dem File.Open() -Aufruf korrekt ist, oder, speichern Sie das richtige Verzeichnis Sie verwenden und zu verwenden wollen ein absoluter Pfad für File.Open()

Verwandte Themen