Das ist, was ich versuche zu tun:Gibt es einen Weg in C# zu wissen, wann der Benutzer die Bearbeitung einer Datei mit einer Anwendung beendet hat?
- eine Datei herunterladen (txt, doc, xls, was auch immer) von einem Server
- öffnen Sie die Datei mit der entsprechenden Anwendung mit System.Diagnostics.Process. Start (Pfad zur Datei)
- Monitor für Dateiänderungen mit einem FileSystemWatcher.
- Jedes Mal, wenn die Datei geändert wird, laden Sie die Datei an den Server zurück
- Überwachung fortsetzen, bis der Benutzer
- Löschen Sie die lokale Kopie der
- Beenden Sie die Anwendung
Ich bin bei Schritt 5 fest. Wie kann ich wissen, ob ein Benutzer die Arbeit an einer Datei beendet hat?
Ich kann nicht darauf verlassen, dass die Datei gesperrt wird (Notepad zum Beispiel nicht txt-Dateien sperren).
Ich kann nicht auf einen Prozess verlassen oder nicht verlassen (ein Beispiel ist Notepad ++ für TXT-Dateien: Die Datei könnte auf einer Registerkarte geöffnet werden. Wenn Sie die Registerkarte schließen, haben Sie die Bearbeitung der Datei abgeschlossen, aber der Prozess ist läuft noch)
Irgendwelche Ideen/Punkte, wie man das in C# macht?
Ich sehe Ihren Standpunkt. Ich vermute, dass System.Diagnostics.Process.Start() der Standard-Editor ist, oder? In diesem Fall ist es schwierig. Wir haben dieses Problem gelöst, indem wir einen eigenen Editor (oder immer einen Notizblock, wenn Sie möchten) starten und warten, bis der Prozess abgeschlossen ist, aber vielleicht ist das keine Lösung für Sie. –
Über notepad ++: git-Benutzer lösen dieses Problem mit den Schaltern '-multiInst -nosession -notabbar' - auf diese Weise wird notepad ++ gezwungen, einen einzigen, eindeutigen Prozess für die überwachte Datei zu erstellen. – rsenna
@Kiquenet Nicht wirklich. Ich habe dies mit der Sperrüberwachung für Office-Dateien (doc, xls, ppt) implementiert, die von meinen Benutzern am häufigsten verwendet werden. Txt-Dateien waren nur winzige Teile von Dateien und am Ende kein echtes Problem. –