我现在正在使用代码(程序),使用select输入文件,输出文件夹然后转换为xml。
所有变量和方法都在一个类中(另一个文件,但这没有问题)。
反正。我想将其行为改为hotfolder行为;这样,当某个文件被添加到文件夹时,它将根据已经实现的方法处理并执行我想要的任何内容。
好的,现在我的问题出现了:实际上,在Form1.cs上我得到的是一些button_click调用。 我应该将FileSystemWatcher + OnChanged方法放在Form1.Cs中,还是应该将它放在我的Classes.cs文件中(这是包含所有方法,变量等的文件 - 业务逻辑)。 另外,我什么时候打电话给它?一旦form1初始化将是最好的? 感谢您的任何意见:)
答案 0 :(得分:2)
当然,不要把看守者放在你的表格中。
您可以使用的模式是这样的:
public class DirectoryRefresher : IDisposable
{
private FileSystemWatcher FileWatcher { get; set; }
public DirectoryRefresher(string directorypath)
{
FileWatcher = SetupFileWatcher(directoryPath);
}
protected FileSystemWatcher SetupFileWatcher(string path)
{
var watcher = new FileSystemWatcher(path);
watcher.Changed += (sender, e) => { DoYourProcessing(e.FullPath); };
watcher.Created += (sender, e) => { DoYourProcessing(e.FullPath); };
watcher.Deleted += (sender, e) => { DoYourProcessing(e.FullPath); };
watcher.EnableRaisingEvents = true;
return watcher;
}
public void DoYourProcessing(string filePath)
{
...
}
public void Dispose()
{
try
{
if (FileWatcher != null)
{
FileWatcher.Dispose();
FileWatcher = null;
}
}
catch
{
// ignored
}
}
}
当您知道该文件夹时,您只需实例化DirectoryRefresher。当你想要停止它时,你只需Dispose()它。