从Main void调用一个私有void来启动我的应用程序



我还不太擅长这种空洞的东西,所以如果有任何帮助,我们将不胜感激。

首先:我正在尝试创建一个文件系统观察程序,以监视目录,如果添加了文件,请等待文件创建完成,然后将其复制到另一个文件夹。我已经拼凑了下面的代码,但我不知道如何调用私人虚空手表来启动它。

第二:有人知道它是否自己循环吗?还是我必须为它创建一个才能继续查看文件夹?

namespace filewatch
{
class Program
{
public static string watch_path = "C:\testerson\";
public static string copy_path = "C:\copyto\";

static void Main(string[] args)
{
watch(); <---- how can I call watch from here to start it.
}
public void watch()
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = watch_path;
watcher.NotifyFilter = NotifyFilters.LastWrite;
watcher.Filter = "*.*";
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.EnableRaisingEvents = true;
}
private void OnChanged(object source, FileSystemEventArgs e)
{
WaitForFile(e.FullPath + e.Name);
System.IO.File.Copy(e.FullPath, copy_path + e.Name);
}
public static bool IsFileReady(string filename)
{
try
{
using (FileStream inputStream = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.None))
return inputStream.Length > 0;
}
catch (Exception)
{
return false;
}
}
public static void WaitForFile(string filename)
{
while (!IsFileReady(filename)) { }
}
}

}

-编辑:

我已经将私有空隙更改为公共静态,现在没有出现任何错误,但控制台应用程序无法继续运行。它现在只是开始和停止。所以它没有监视文件夹。

您应该将watch((方法设置为静态方法,并简单地从Main方法调用它。

我假设程序通过运行staic void主字符串args启动。如果您将private void watch((更改为public void watch,那么您应该能够从主类调用该构造函数/方法。