Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建文件时退出文件监视程序_C#_Asp.net - Fatal编程技术网

C# 创建文件时退出文件监视程序

C# 创建文件时退出文件监视程序,c#,asp.net,C#,Asp.net,我正在使用一个文件监视程序。当文件被创建时,文件监视程序应该停止,直到再次调用它。我有下面的代码正在监视,循环没有停止 public void startwatch() { string path = "C:\\testwatcher\\"; FileSystemWatcher watcher = new FileSystemWatcher(); watcher.Path = path;

我正在使用一个文件监视程序。当文件被创建时,文件监视程序应该停止,直到再次调用它。我有下面的代码正在监视,循环没有停止

    public void startwatch()
    {
            string path = "C:\\testwatcher\\";
            FileSystemWatcher watcher = new FileSystemWatcher();

            watcher.Path = path;
            watcher.EnableRaisingEvents = true;
            watcher.IncludeSubdirectories = false;
            watcher.Filter = "*.*"; 
            watcher.Created += watcher_Created;
            while (true) ;
    }
    static void watcher_Created(object sender, FileSystemEventArgs e)
    {
        string FileName = ("C:\\testfilescrated\\");
        string text = File.ReadAllText(e.FullPath);
        File.WriteAllText(FileName, text);
    }

我想做的是,当创建文件时,while循环应该结束。

不要使用忙循环,这将不必要地消耗CPU。您可以使用等待句柄,例如使用:


非常糟糕。你为什么忙着等待一个可能发生/不可能发生的事件?异步执行。@SriramSakthivel异步执行的方式删除。如果为true,则让线程继续。然后处理watcher的
创建的
事件并继续。我不能用提供的信息提供更具体的答案。@SriramSakthivel你能写一个例子吗?恐怕没有足够的信息来回答。答案将取决于你想用这个做什么。你为什么要等?
startwatch
之后的代码是什么?那我就可以回答了。谢谢,它起作用了。由于无法访问非静态(ManualResetEvent _resetEvent;)memebr,必须从创建的静态void watcher_(对象发送方,FileSystemEventArgs e)中删除静态字。
ManualResetEvent _resetEvent;

public void StartWatch()
{
    // Start watching...

    // Wait until signaled.
    _resetEvent = new ManualResetEvent(false);
    _resetEvent.WaitOne();
}

void watcher_Created(object sender, FileSystemEventArgs e)
{
    // Handle your file...

    // And signal.
    _resetEvent.Set();  
}