等待将文件添加到目录的阻塞方法

时间:2014-02-07 09:37:38

标签: c# .net watchservice

我想知道如何制作出类似的东西。从Java 1.7开始我可以使用WatchService但是如何在C#中做到这一点?我想让这个方法阻塞,而不是通常的事件,所以它会一直等到新文件出现。

while(isANewFileInDirectory(path)){
     doSomeCode();
}

编辑:

     FileSystemWatcher watcher = new FileSystemWatcher(".\\Screenshots");
                    watcher.Created += watcher_Created;

   void watcher_Created(object sender, FileSystemEventArgs e) {
            System.Diagnostics.Debug.WriteLine("fasuigfasuigf423432FSDFSAasuigf");
            sendResponse(e.FullPath);
        }

2 个答案:

答案 0 :(得分:3)

是否必须阻止?你可以使用Filewatcher ...... http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.110).aspx

编辑:这是一个例子:

namespace FileWatchTest
{
    class Program
    {
        static void Main(string[] args)
        {
            FileSystemWatcher watcher = new FileSystemWatcher(@"c:\temp");
            watcher.EnableRaisingEvents = true;
            watcher.Created += (obj, arg) => Console.WriteLine("File {0} created", arg.Name);
            watcher.Deleted += (obj, arg) => Console.WriteLine("File {0} deleted", arg.Name);
            watcher.Changed += (obj, arg) => Console.WriteLine("File {0} changed", arg.Name);

            Console.ReadLine();
        }
    }
}

将其粘贴到控制台应用程序中,您应该看到更新(显然 - 更改您要观看的文件夹的路径...)

答案 1 :(得分:1)

查看FileSystemWatcher类。 MSDN有详细信息和示例代码。 here