C # Help - FileSystemWatcher Class - PullRequest
3 голосов
/ 20 мая 2011

У меня есть следующий код, хотя я пытаюсь вывести:

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

Хотя я получаю следующую ошибку:

Имя 'e' не существует в текущем контексте

Мой код выглядит следующим образом:

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 + "");
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 20 мая 2011

e относится к параметру EventArgs методов событий.

Если вы введете это:

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

в

static void FileWatcher_Renamed(object sender, RenamedEventArgs e)

метод, он должен работать.

0 голосов
/ 20 мая 2011

Из того, что я вижу в коде, у вас есть код для события Rename внутри основного метода, который не содержит объект FileSystemEventArgs (называемый "e.")

Я думаю, что для решения этой проблемы вы должны изменить тело «FileWatcher_Renamed» на блок using.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...