从 Main void 调用一个 private void 来启动我的应用程序
Call a private void from the Main void to start my application
我还不是很擅长这个虚空的东西,所以任何帮助将不胜感激。
首先:我正在尝试创建一个文件系统观察器,以监视一个目录,如果添加了一个文件,请等待文件创建完成,然后将其复制到另一个文件夹。我拼凑了下面的代码,但我不知道如何调用 private void watch 来启动它。
其次:有谁知道它是不是自己循环的?还是我必须为其创建一个才能继续观看该文件夹?
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)) { }
}
}
}
- 编辑:
我把private voids改成了publicstatic,现在没有报错了,但是console app不留运行。它现在开始和停止。所以它不监视文件夹。
我假设程序以 运行 静态无效主字符串参数开始。如果将 private void watch() 更改为 public void watch,那么您应该能够从主 class 调用该构造函数/方法。
您应该将 watch() 方法设为静态,并从 Main 方法简单地调用它。
我还不是很擅长这个虚空的东西,所以任何帮助将不胜感激。
首先:我正在尝试创建一个文件系统观察器,以监视一个目录,如果添加了一个文件,请等待文件创建完成,然后将其复制到另一个文件夹。我拼凑了下面的代码,但我不知道如何调用 private void watch 来启动它。
其次:有谁知道它是不是自己循环的?还是我必须为其创建一个才能继续观看该文件夹?
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)) { }
}
}
}
- 编辑:
我把private voids改成了publicstatic,现在没有报错了,但是console app不留运行。它现在开始和停止。所以它不监视文件夹。
我假设程序以 运行 静态无效主字符串参数开始。如果将 private void watch() 更改为 public void watch,那么您应该能够从主 class 调用该构造函数/方法。
您应该将 watch() 方法设为静态,并从 Main 方法简单地调用它。