Refresh / Quelle neu einlesen funktioniert nicht
Moderators: Hacker, Stefan2, white
Refresh / Quelle neu einlesen funktioniert nicht
Hallo,
Mein System:
Win 7 Prof + SP1 64bit
TC 8.0 64bit
Mein Problem:
Wenn ich zum Beispiel eine größere Datei (innerhalb des TC) von A nach B kopiere und während des Kopiervorgang im Zielverzeichnis STR+R drücke, dann aktuallisiert sich nicht die Dateigröße.
Die geschieht auch nicht, wenn ich aus dem Zielverzeichnis raus und wieder rein gehe, auch nicht über das Menü > Ansicht > Quelle neu einlesen, auch nicht, wenn ich in den Einstellungen > Neu-Einlesen > Refresh bei Erzeugen, Umbenennen, Löschen von Dateien ein Haken setze.
Ich habe es auch schon mit einer TC 32bit Version probiert. Hier genau das gleiche.
Vermutlich liegt es an einer "Falschoptimierung" des Win7 Systems.
Hat jemand eine Idee, Vorschläge oder sonstiges, was ich probieren könnte?
Danke.
Mein System:
Win 7 Prof + SP1 64bit
TC 8.0 64bit
Mein Problem:
Wenn ich zum Beispiel eine größere Datei (innerhalb des TC) von A nach B kopiere und während des Kopiervorgang im Zielverzeichnis STR+R drücke, dann aktuallisiert sich nicht die Dateigröße.
Die geschieht auch nicht, wenn ich aus dem Zielverzeichnis raus und wieder rein gehe, auch nicht über das Menü > Ansicht > Quelle neu einlesen, auch nicht, wenn ich in den Einstellungen > Neu-Einlesen > Refresh bei Erzeugen, Umbenennen, Löschen von Dateien ein Haken setze.
Ich habe es auch schon mit einer TC 32bit Version probiert. Hier genau das gleiche.
Vermutlich liegt es an einer "Falschoptimierung" des Win7 Systems.
Hat jemand eine Idee, Vorschläge oder sonstiges, was ich probieren könnte?
Danke.
Ich habe gerade gesehen, dass mein Problem hier http://ghisler.ch/board/viewtopic.php?t=25187 schon mal diskuttiert wurde aber leider noch keine Lösung gefunden wurde.
Gibt es vielleicht jetzt was aktuelles oder andere Ideen dazu?
Liegt das nun an TC oder an Win7 64bit?
Gibt es vielleicht jetzt was aktuelles oder andere Ideen dazu?
Liegt das nun an TC oder an Win7 64bit?
- ghisler(Author)
- Site Admin
- Posts: 50406
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Sie können Alt+Enter drücken auf der Datei, dann aktualisiert sichdie Grösse.
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
Diese Tastenkombination ruft bei mir das Fenster mit den Dateieigenschaften auf. Es aktualisiert aber nicht die Dateigröße.
Ich kenne diese Tastenkombination eigentlich für Ordner. Damit wird, zu mindest bei mir die Ordnergröße angezeigt.
Liegt das an einem Buck im TC wenn er auf einem 64bit System läuft oder an Windows selber? Weil das aktualisieren der Dateigröße nach drücken von F5 im Win-Explorer funktioniert ja. Danach ist dann auch die Dateigröße im TC aktualisiert.
Wenn es ein Win Buck ist, kann man TC so programmieren, dass dieser Win Buck umgangen wird?
Ich kenne diese Tastenkombination eigentlich für Ordner. Damit wird, zu mindest bei mir die Ordnergröße angezeigt.
Liegt das an einem Buck im TC wenn er auf einem 64bit System läuft oder an Windows selber? Weil das aktualisieren der Dateigröße nach drücken von F5 im Win-Explorer funktioniert ja. Danach ist dann auch die Dateigröße im TC aktualisiert.
Wenn es ein Win Buck ist, kann man TC so programmieren, dass dieser Win Buck umgangen wird?
- Chardonnens
- Member
- Posts: 115
- Joined: 2006-07-20, 16:30 UTC
- Location: Schweiz
- ghisler(Author)
- Site Admin
- Posts: 50406
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Nein nein, es ist tatsächlich Alt+Enter gemeint! Windows scheint da irgend eine Funktion aufzurufen, welche den NTFS-Cache auf den aktuellen Stand bringt. Gerade bei längeren Downlloads kann man Alt+Enter benutzen, um die tatsächliche Grösse der bereits heruntergeladenen Teildatei anzeigen zu lassen. Wenn man zusätzlich die Option "Automatisches Neu-Einlesen" eingestellt hat, dann zeigt TC diese Grösse danach auch in der Dateiliste an.
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
Danke für die Erklärung.
Wie schon oben beschrieben, funktionniert die Einstellung "Automatisches Neu-Einlesen" leider auch nicht.
Bin aber gerne für weiter Versuche und Vorschläge offen.
@ghisler(Author)
liegt das nun an Win7x64 selbst oder an TCx86 unter Win7x86?
Denn scheinbar bin ich nicht alleine mit diesem Problem, wie man hier
http://ghisler.ch/board/viewtopic.php?t=25187
lesen kann.
Wie schon oben beschrieben, funktionniert die Einstellung "Automatisches Neu-Einlesen" leider auch nicht.
Bin aber gerne für weiter Versuche und Vorschläge offen.
@ghisler(Author)
liegt das nun an Win7x64 selbst oder an TCx86 unter Win7x86?
Denn scheinbar bin ich nicht alleine mit diesem Problem, wie man hier
http://ghisler.ch/board/viewtopic.php?t=25187
lesen kann.
So ich habe so eben nochmal Win7x64 neu installiert um sicher zu stellen, dass es nicht an einer Fehlkonfiguration meinerseits liegt.
Ich habe so wohl TCx64 als auch TCx32 ausprobiert. Genau der gleiche Fehler. Die Dateigröße aktuallisiert sich erst, nachdem sie fertig (kopiert, entpackt, downgelodet) ist. Auch die schon genannten Einstellungen (refresh) und Tastenkombinationen haben nicht funktioniert.
Schade ich hatte gehofft, dass es auch einem frisch installiertem System (Win7x64) vielleicht doch funktioniert.
Dann hoffe ich einfach mal darauf, dass es in einer der nächsten Versionen von TC irgendwie behoben werden kann.
Ich habe so wohl TCx64 als auch TCx32 ausprobiert. Genau der gleiche Fehler. Die Dateigröße aktuallisiert sich erst, nachdem sie fertig (kopiert, entpackt, downgelodet) ist. Auch die schon genannten Einstellungen (refresh) und Tastenkombinationen haben nicht funktioniert.
Schade ich hatte gehofft, dass es auch einem frisch installiertem System (Win7x64) vielleicht doch funktioniert.
Dann hoffe ich einfach mal darauf, dass es in einer der nächsten Versionen von TC irgendwie behoben werden kann.
- ghisler(Author)
- Site Admin
- Posts: 50406
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Sorry, TC kann nur anzeigen was ihm Windows meldet. NTFS verwendet eine Art Cache für Verzeichnisse, der meist nur beim Schliessen von Dateien angepasst wird.
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
Aber warum aktualisiert sich dann die Dateigröße im Explorer wenn ich dort F5 drücke, bevor die Datei fertig ist?ghisler(Author) wrote: ... NTFS verwendet eine Art Cache für Verzeichnisse, der meist nur beim Schliessen von Dateien angepasst wird.
Das müsste ja dann auch nicht funktionieren, wenn dem so ist.
Oder verstehe ich da was falsch?
Kann man nicht die Aktion/Event der durch F5 im Explorer ausgeführt wird durch TC mittels STRG+R oder "refresh" Einstellungen abrufen?
Das ist nur eine naive Vorstellung ... ich habe keine Ahnung, was das für die Umsetzung in der Programmierung bedeutet.
- ghisler(Author)
- Site Admin
- Posts: 50406
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Weiss ich leider nicht, ich habe den Quellcode des Explorers nicht. Bei Alt+Enter vermute ich, dass der Explorer die Datei kurz öffnet und dann wieder schliesst, was (zumindest bei mir) den NTFS-Cache aktualisiert.
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
Also zumindest ab XP bei NTFS sollte FindFirstChangeNotification zuverlässig funktionieren. http://msdn.microsoft.com/en-us/library/windows/desktop/aa364417%28v=vs.85%29.aspx
- ghisler(Author)
- Site Admin
- Posts: 50406
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
FindFirstChangeNotification meldet nur, wenn sich etwas ändert, aber nicht, was sich geändert hat:
Total Commander benutzt bereits ReadDirectoryChangesW. Für geänderte Dateien ruft er dann FindFirstFileW auf, aber da wird eben der Cache-Wert für die Grösse zurückgeliefert, und nicht der aktuelle Wert.
ReadDirectoryChangesW wiederum liefert eine FILE_NOTIFY_INFORMATION-Struktur zurück, die nur den Namen der geänderten Datei meldet.This function does not indicate the change that satisfied the wait condition. To retrieve information about the specific change as part of the notification, use the ReadDirectoryChangesW function.
Total Commander benutzt bereits ReadDirectoryChangesW. Für geänderte Dateien ruft er dann FindFirstFileW auf, aber da wird eben der Cache-Wert für die Grösse zurückgeliefert, und nicht der aktuelle Wert.
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
Sie haben recht. Das wusste ich bis anhin nicht.
Hier http://blogs.msdn.com/b/oldnewthing/archive/2011/12/26/10251026.aspx habe ich einen Workaround gefunden.
Allerdings hatte ich bisher keine Zeit das zu überprüfen.
Offenbar kann das Verhalten mit zweimaligem öffnen des Files via CreateFileW() umgangen werden.
Hier http://blogs.msdn.com/b/oldnewthing/archive/2011/12/26/10251026.aspx habe ich einen Workaround gefunden.
Allerdings hatte ich bisher keine Zeit das zu überprüfen.
Offenbar kann das Verhalten mit zweimaligem öffnen des Files via CreateFileW() umgangen werden.