2016-05-17 9 views
-1

Ich weiß, wie funktioniert FileSystemWatcher in C#.Wie wird mit der Dateierstellung verfahren?

Es ermöglicht uns, eine Nachricht zu geben, wenn die Datei bereits erstellt wurde.
egal, welches Programm/Prozess diese Datei erstellt hat!
Oder es ermöglicht uns, Informationen darüber zu geben, was ein Name der erstellten Datei ist, oder als es "vor wenigen Sekunden" erstellt wurde ... Auch ermöglicht es uns, eine Nachricht über Datei, die gelöscht oder geändert wurde.

Aber es ermöglicht uns nicht, diese Art von Ereignis zu erstellen:
wenn Datei erstellt wird, aber es ist noch nicht/noch erstellt!
Was ist, wenn ich den Dateierstellungsprozess programmgesteuert beenden oder pausieren möchte?

Zum Beispiel möchte ich Dateierstellung Prozess programmgesteuert behandeln oder zu beenden, je nach Informationen, die uns sagt, dass die Größe dieser Datei 4 GB ist?
egal welches Programm/Prozess versucht diese Datei zu erstellen!

Oder es gibt eine andere Frage:
Was ist, wenn ich berechnen möchte, wann die Dateierstellung gestartet wurde und wann wurde sie erstellt? sowie Abstand zwischen diesen beiden Daten !? Ich glaube, Sie haben verstanden, dass wir mehr Informationen über die Datei benötigen, bevor der Prozess beginnt, sie zu erstellen!

Ich denke, Sie könnten wissen, dass in Windows 10 die explorer.exe uns erlaubt, es jederzeit zu tun!

enter image description here

Es ermöglicht uns auch ein Kopiervorgang jederzeit wieder aufnehmen!
Also, wenn es möglich ist, es in explorer.exe zu tun, dann könnte es auch möglich sein, es zu tun .NET
aber vergessen, diese wieder aufnehmen Fähigkeit explorer.exe

Ich brauche nur eine beliebige Datei Erstellungsprozess abzubrechen zum Beispiel, wenn die Größe dieser Datei 4 GB beträgt! egal, welches Programm versucht, Datei zu erstellen!

Also bitte helfen Sie mir herauszufinden, wie man eine MessageBox während der Dateierstellung Prozess Pop?


Vielen Dank!
Sorry mein schlechtes Englisch!

+0

Dann durchsuchen Sie die Prozesse und finden Sie heraus, welcher Prozess die Datei erstellt und beendet hat - es gibt keine Garantien - haben Sie diese fast identische Frage nicht gleich gestellt? – BugFinder

+0

ja! Ich habe gefragt und jetzt habe ich verbessert! Denken Sie auch daran, dass wir über viele Dateierstellungen sprechen. All dies bedeutet, dass meine .net-Anwendung selbst die Prozesse durchsuchen und herausfinden muss, welcher Prozess die Datei erstellt und beendet hat! – IremadzeArchil19910311

+0

aber Sie können nicht immer einen Prozess beenden .. Sie haben möglicherweise keine Erlaubnis ..plus, Sie beenden den Prozess, nicht die Dateiwrite .. es könnte eine Hölle von einem Chaos – BugFinder

Antwort

1

Die einzige Möglichkeit, über die Dateioperation benachrichtigt zu werden, bevor sie tatsächlich ausgeführt wird, ist die Verwendung eines Dateisystemfiltertreibers. Dies ist ein Kernel-Modus-Treiber, den Sie in C schreiben müssen. Es gibt Beispiele solcher Treiber im Internet. Eine Alternative zum Schreiben eines solchen Treibers besteht darin, eine der Bibliotheken zu verwenden, die vordefinierte Filtertreiber enthalten, und Sie können alle oder ausgewählte Dateisystemanforderungen im Benutzermodus (einschließlich .NET) verarbeiten. Unsere Firma bietet CallbackFilter für diesen Zweck an.

+0

Sie haben Recht! Vielen Dank! – IremadzeArchil19910311

+0

Aber können Sie mir den Namen einer dieser Bibliotheken sagen! Bitte! – IremadzeArchil19910311

+0

@ IremadzeArchil19910311 Unser CallbackFilter ist der eine, und da war auch EaseFilter. –