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();
}