/ / C # Hilfe - FileSystemWatcher-Klasse - c #, .net, Windows

C # Hilfe - FileSystemWatcher Klasse - c #, .net, Windows

Ich habe den folgenden Code, obwohl ich versuche, Folgendes auszugeben:

fileWriter.Write(e.OldName + " was renamed to " + e.Name + Environment.NewLine);

Obwohl ich den folgenden Fehler erhalte:

Der Name "e" existiert im aktuellen Kontext nicht

Mein Code ist wie folgt:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace FileWatcherr
{
class Program
{
static void Main(string[] args)
{
string dirPath = "C:\";
FileSystemWatcher fileWatcher = new FileSystemWatcher(dirPath);
fileWatcher.IncludeSubdirectories = true;
fileWatcher.Filter = "*.exe";
// fileWatcher.Filter = "C:\$Recycle.Bin";
//  fileWatcher.Changed += new FileSystemEventHandler(FileWatcher_Changed);
fileWatcher.Created += new FileSystemEventHandler(FileWatcher_Created);
//  fileWatcher.Deleted += new FileSystemEventHandler(FileWatcher_Deleted);
//  fileWatcher.Renamed += new RenamedEventHandler(FileWatcher_Renamed);
fileWatcher.EnableRaisingEvents = true;

// updated code
using(StreamWriter fileWriter = new StreamWriter("test2.txt"))
{
var data = true;
fileWriter.Write(e.OldName + " was renamed to " + e.Name + Environment.NewLine);
}

Console.ReadKey();
}



static void FileWatcher_Renamed(object sender, RenamedEventArgs e)
{
Console.WriteLine(e.OldName + " was renamed to " + e.Name);
}

static void FileWatcher_Deleted(object sender, FileSystemEventArgs e)
{
Console.WriteLine(e.Name + " was deleted");
}

static void FileWatcher_Created(object sender, FileSystemEventArgs e)
{
Console.WriteLine("C:\" + e.Name);
}

static void FileWatcher_Changed(object sender, FileSystemEventArgs e)
{
Console.WriteLine(e.Name + "");
}
}
}

Antworten:

2 für die Antwort № 1

Das e bezieht sich auf EventArgs Parameter der Ereignismethoden.

Wenn du das bildest:

using(StreamWriter fileWriter = new StreamWriter("test2.txt"))
{
var data = true;
fileWriter.Write(e.OldName + " was renamed to " + e.Name + Environment.NewLine);
}

in dem

static void FileWatcher_Renamed(object sender, RenamedEventArgs e)

Methode sollte es funktionieren.


0 für die Antwort № 2

Von dem, was ich im Code sehen kann, haben Sie den Code für das Rename-Ereignis innerhalb der Hauptmethode, die kein FileSystemEventArgs-Objekt enthält ("e." Genannt)

Ich denke, um dieses Problem zu beheben, sollten Sie den Textkörper von "FileWatcher_Renamed" in den using-Block ändern.