Laden...

FileSystemWatcher change wird 2x ausgeführt

Erstellt von kantaki vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.326 Views
Thema geschlossen
K
kantaki Themenstarter:in
21 Beiträge seit 2011
vor 12 Jahren
FileSystemWatcher change wird 2x ausgeführt

hallo,

ich möchte eine txt einlesen wenn diese geändert wird. Allerdings wird das event "fileWatcher_Changed" zweimal ausgeführt.
dh
wenn ich eine txt habe die wie folgt aussieht.

1
2
3

und diese speichere, also ändere, bekomme ich als output
123123

irgenteine idee wie ich das vermeiden kann ?

    private void fileWatcher_Changed(object sender, System.IO.FileSystemEventArgs e)
        {
            if (System.IO.File.Exists(e.FullPath) == true)
            {
                 FileManager fm = new FileManager();
                 fm.parse(e.FullPath);
                 foreach (string a in fm.handHistory)
                 {
                     txtLog.Text += a;
                 }
               
                
            }
        }
6.862 Beiträge seit 2003
vor 12 Jahren

Hallo,

du musst beachten was in der Doku steht:

Common file system operations might raise more than one event. For example, when a file is moved from one directory to another, several OnChanged and some OnCreated and OnDeleted events might be raised. Moving a file is a complex operation that consists of multiple simple operations, therefore raising multiple events. Likewise, some applications (for example, antivirus software) might cause additional file system events that are detected by FileSystemWatcher.

Gleich danach wird auch nen Tipp gegeben wie man die vielen Events einschränken kann:

Use NotifyFilter to restrict the number of notifications raised when this event is handled.

Deshalb immer schön Doku lesen, wie in [Hinweis] Wie poste ich richtig? Punkt 1 1 von unseren Regeln verlangt.

Baka wa shinanakya naoranai.

Mein XING Profil.

K
kantaki Themenstarter:in
21 Beiträge seit 2011
vor 12 Jahren

ok ich habe das komplett überlesen 😦

jetzt weiß ich wenigstens warum das event mehrfach ausgeführt wurde.

trotzdem bekomme ich aus irgenteinem grund eine argument exception. Ich habe es genauso verwendet wie es in der doku beschrieben wurde.

private void Start_Click(object sender, EventArgs e)
        {
            if (FolderPath.Text != "")
            {
                try
                {
                    fileWatcher.NotifyFilter = NotifyFilters.LastWrite;
                    fileWatcher.EnableRaisingEvents = true;
                }
                catch (ArgumentException p)
                {
                    txtLog.Text += "Warum eine Exeption ?";
                }
            }

        }
16.807 Beiträge seit 2008
vor 12 Jahren

Schau Dir die Exception genau an; dann wirst Du wissen woran es liegt.
Code zu zeigen, aber die Exception weder genau zu lesen noch anzugeben, bringt keinem weiter.

Ich bin sicher, wenn Du Dir die Exception mal anschaust, und Deinen Code im Debugger verfolgst, wirst Du selbst die Lösung finden.

Thema geschlossen