1.1依賴引用:
using system.IO
1.2基礎(chǔ)代碼(example):
//這個(gè)模塊可以在onLoad里實(shí)現(xiàn)
FileSystemWatcher WatcherDemo = new FileSystemWatcher();
WatcherDemo.Path = ""
xmlWatcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.LastAccess;
//以上為監(jiān)控的要素,還有其他鲜屏,可以自己根據(jù)提示看一下
xmlWatcher.Created += new FileSystemEventHandler(this.fileChangedAction);
//fileChangedAction是一個(gè)監(jiān)控到文件發(fā)生改變后自定義的事件洛史,在本文1.3中實(shí)現(xiàn)
xmlWatcher.Changed += new FileSystemEventHandler(this.fileChangedAction);
xmlWatcher.EnableRaisingEvents = true;
//一個(gè)線程只能監(jiān)控一個(gè)文件夾
//但可以監(jiān)控文件夾和子文件夾酱吝,所以這是一個(gè)實(shí)現(xiàn)多文件夾監(jiān)控的思路
//要么重開新線程
1.3攔截到符合條件的動(dòng)作后的函數(shù)
string lastModify = ""; //設(shè)置了一個(gè)全局開關(guān),因?yàn)槲募O(jiān)控事件會(huì)出現(xiàn)兩次事件
public void fileChangedAction(object source,FileSystemEventArgs e) {
string nowModify = DateTime.Now.ToLongTimeString();
if (nowModify != lastModify)
{
richTextBox1.AppendText("發(fā)生變化了" + DateTime.Now.ToLongTimeString() + "\n");
//以上部分要生效毕源,設(shè)計(jì)跨線程調(diào)用陕习,在本文的1.4設(shè)置
ReadXmlAndSaveToMongo useObject = new ReadXmlAndSaveToMongo();
//這是一個(gè)自定義的類,實(shí)現(xiàn)需要的操作
try
{
useObject.ReadXml();
}
catch {
}
lastModify = nowModify;
}
else {
lastModify = nowModify;
}
}
1.4 跨線程調(diào)用開關(guān)
public Form1()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false; //允許跨線程調(diào)用
}