C#帮助-FileSystemWatcher类

C#帮助-FileSystemWatcher类,c#,.net,windows,C#,.net,Windows,我有以下代码,尽管我正在尝试输出: 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 Fi

我有以下代码,尽管我正在尝试输出:

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

从代码中可以看出,main方法中包含重命名事件的代码,该方法不包含FileSystemEventArgs对象(称为“e”)


我认为要解决这个问题,您应该将“FileWatcher\u重命名”的主体更改为using块。

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)

方法,它应该可以工作。

这正是错误所说的。主方法中没有名为“e”的变量。@JackMc如何将“e”变量添加到主方法?星际迷航闪回;在这篇文章中,'-to-Programmer'的比例很高。制作信息技术走吧,我觉得你是新来的。也许您应该首先回顾事件处理的基本知识。您好,我如何在main方法中添加名为e的FileSystemEventArgs对象?@Michael FileSystemEventArgs对象将传递给FileSystemWatcher类的不同事件。我在上面的一个解决方案中进行了编辑。“我认为要解决这个问题,您应该将“FileWatcher_重命名”的主体更改为using块。”我这样做了,它复制ok,但不输出文件:S@Michael:确保代码中的这一行未被注释掉:fileWatcher.Rename+=新重命名的EventHandler(fileWatcher_重命名);