2 Stimmen

Dateiwächter im Windows-Dienst

Ich bin Anfänger und versuche, einen Windows-Dienst zu entwickeln, der einen Ordner (oder eine Gruppe von Ordnern) auf neue oder geänderte Dateien überprüft. Sobald er eine neue Datei oder Änderungen (an Dateien oder Ordnern) erkennt, kopiert er die Dateien (und neue Ordner) und fügt sie an anderer Stelle ein.

Ich habe dasselbe mit einer Windows Forms-Anwendung gemacht, aber bei einem Windows-Dienst weiß ich nicht, was ich tun soll - wie kann ich das in einem Windows-Dienst tun?

6 Stimmen

Gut für dich, klingt super.

4 Stimmen

Oki, also wir verstehen, dass Sie den Service entwickeln. Könnten Sie die Frage bearbeiten und uns mitteilen, wo Sie auf Schwierigkeiten gestoßen sind und ob Sie einige Codebeispiele posten können? Danke

0 Stimmen

Hast du die FileSystemWatcher-Klasse ausprobiert? msdn.microsoft.com/de-de/library/…

7voto

Darin Dimitrov Punkte 990883

Sie könnten die FileSystemWatcher-Klasse verwenden.

0voto

Narendra Punkte 1262

Hier ist wie wir diese Aufgabe mit dem Datei-Watcher ohne Timer abschließen können

public void ProcessFile(string filepath)
    {
        var fileN ="neuerDateiname";
        string destfile = "E:\\2. Ordner" + fileN;
        File.Copy(filepath, destfile, true);
    }

    protected override void OnStart(string[] args)
    {
       String[] files = Directory.GetFiles("E:\\", "*.*");
        foreach (string file in files)
        {
            ProcessFile(file);
        }
        var fw = new FileSystemWatcher("Ordnerpfad");
        fw.IncludeSubdirectories = false;
        fw.EnableRaisingEvents = true;
        fw.Created += Newfileevent;

    }
    static void Newfileevent(object sender, FileSystemEventArgs e)
    {
        ProcessFile(e.FullPath);

    }

-4voto

Vikash Pandey Punkte 3859

Hier ist die richtige Antwort auf diese Frage

public static void MyMethod()
{
    String[] files = Directory.GetFiles("E:\\", "*.*");
    foreach (string file in files)
    {
        var fileN = file.Substring(2);
        string destfile = "E:\\2nd folder" + fileN;
        File.Copy(file, destfile, true);
    }
}

Es ist erforderlich, in regelmäßigen Abständen auf die Datei zu achten....dieser Code überwacht die Datei alle 2 Sekunden

protected override void OnStart(string[] args)
{
    timer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
    timer.Interval = 2000;
    timer.Enabled = true; 
    MyMethod();
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X