
using System; |
using System.Collections; |
using System.IO; |
using System.Threading; |
using System.Windows.Forms; |
|
namespace MonitorDirectory |
{ |
class Program |
{ |
private static FileSystemWatcher FileSystemWatcher1 = null; |
private static Hashtable fileTable = new Hashtable(); |
|
[STAThread] |
public static void Main(string[] args) |
{ |
FolderBrowserDialog dilog = new FolderBrowserDialog(); |
dilog.Description = "请选择要监视的文件夹"; |
if(dilog.ShowDialog() == DialogResult.OK || dilog.ShowDialog() == DialogResult.Yes) |
{ |
string path=dilog.SelectedPath; |
FileSystemWatcher1 = new FileSystemWatcher(); |
FileSystemWatcher1.Path = path; |
FileSystemWatcher1.Filter = "*.tmp"; |
FileSystemWatcher1.IncludeSubdirectories = true; |
FileSystemWatcher1.Created += new FileSystemEventHandler(FileSystemWatcher1_Created); |
FileSystemWatcher1.Changed += new FileSystemEventHandler(FileSystemWatcher1_Changed); |
FileSystemWatcher1.Renamed += new RenamedEventHandler(FileSystemWatcher1_Renamed); |
FileSystemWatcher1.EnableRaisingEvents=true; |
//加入任务 |
foreach(string file in Directory.GetFiles(path,"*.txt")) |
{ |
Tasks task = new Tasks(); |
task.filepathname=file; |
task.Push(); |
} |
Tasks t = new Tasks(); |
Thread th = new Thread(new ThreadStart(t.ThreadWork)); |
th.Start(); |
Console.Read(); |
th.Abort(); |
FileSystemWatcher1.EnableRaisingEvents = false; |
FileSystemWatcher1.Dispose(); |
FileSystemWatcher1 = null; |
return; |
} |
} |
|
private static void FileSystemWatcher1_Created(object sender, FileSystemEventArgs e) |
{ |
Monitor.Enter( fileTable.SyncRoot ); |
try |
{ |
fileTable.Add(e.FullPath,false); |
Console.WriteLine("文件"+e.FullPath+"被创建"); |
} |
finally |
{ |
Monitor.Exit( fileTable.SyncRoot ); |
} |
} |
|
private static void FileSystemWatcher1_Changed(object sender, FileSystemEventArgs e) |
{ |
if(fileTable.ContainsKey(e.FullPath) && !(bool)fileTable[e.FullPath]) |
{ |
Monitor.Enter( fileTable.SyncRoot ); |
try |
{ |
fileTable[e.FullPath]=true; |
Console.WriteLine("文件"+e.FullPath+"有数据"); |
} |
finally |
{ |
Monitor.Exit( fileTable.SyncRoot ); |
} |
} |
} |
|
private static void FileSystemWatcher1_Renamed(object sender, RenamedEventArgs e) |
{ |
if(fileTable.ContainsKey(e.OldFullPath) && (bool)fileTable[e.OldFullPath]) |
{ |
Monitor.Enter( fileTable.SyncRoot ); |
try |
{ |
fileTable.Remove(e.OldFullPath); |
Console.WriteLine("文件"+e.FullPath+"被处理"); |
Tasks task = new Tasks(); |
task.filepathname=e.FullPath; |
task.Push(); |
} |
finally |
{ |
Monitor.Exit( fileTable.SyncRoot ); |
} |
} |
} |
} |
} |



