資源簡介
這是我自己寫的一個程序,用于公司的自動監控業務。本來覺得這個很簡單,后來弄了小兩天才弄好。在開發過程中,知道要用FileSystemWatcher類,用這個類比較簡單,有固定套路。但是技術難點在于,基于事件的處理,onchanged事件的多次觸發,還有oncreated事件的處理,因為在剛一創建的時候,該事件即被觸發,導致文件還沒有創建完成就觸發事件,導致程序報異常。多次觸發的解決方案是參考網上的大俠說的,在事件處理函數里,先停止監聽事件,等處理完成,再開啟監聽。歡迎大家給出好的建議。網上有很多解決方案,感覺都夠讓人頭大,微軟的這個東西,方便是方便,但是用好它卻不易,所以微軟做的東西也沒有按照我黨的教育方針,以人為本啊。

代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.ComponentModel;
using?System.Data;
using?System.Drawing;
using?System.Text;
using?System.Windows.Forms;
using?System.IO;
using?System.Configuration;
using?System.Threading;
namespace?monitoringform
{
????public?partial?class?Form1?:?Form
????{
????????private?string?source?=?ConfigurationManager.AppSettings[“source“];
????????static?private?string?dest?=?ConfigurationManager.AppSettings[“dest“];
????????private?string?filter?=?ConfigurationManager.AppSettings[“filter“];
????????FileSystemWatcher?watcher?=?new?FileSystemWatcher();
????????private?string?ip?=?ConfigurationManager.AppSettings[“ftpserver“];
????????public?Form1()
????????{
????????????InitializeComponent();
????????}
????????private?void?button1_Click(object?sender?EventArgs?e)
????????{
????????????CreateWatcher();
????????}
????????protected?void?CreateWatcher()
????????{
????????????watcher.Path?=?source;//?@“\\192.168.6.52\libotest“;
????????????/*?Watch?for?changes?in?LastAccess?and?LastWrite?times?and
???????????????the?renaming?of?files?or?directories.?*/
????????????watcher.NotifyFilter?=?NotifyFilters.LastAccess?|?NotifyFilters.LastWrite
???????????????|?NotifyFilters.FileName?|?NotifyFilters.DirectoryName;
????????????//?Only?watch?text?files.
????????????watcher.Filter?=?filter;
????????????//?Add?event?handlers.
????????????watcher.Changed?+=?new?FileSystemEventHandler(onchanged);
????????????watcher.Created?+=?new?FileSystemEventHandler(onchanged);
????????????watcher.Deleted?+=?new?FileSystemEventHandler(onchanged);
????????????watcher.Renamed?+=?new?RenamedEventHandler(OnRenamed);
????????????//runlog(“aaa“);
????????????//?Begin?watching.
????????????watcher.IncludeSubdirectories?=?true;
????????????watcher.EnableRaisingEvents?=?true;
????????}
????????//?Define?the?event?handlers.
????????private?static?void?onchanged(object?source?FileSystemEventArgs?e)
????????{
????????????//?Specify?what?is?done?when?a?file?is?changed?created?or?deleted.
????????????//Console.WriteLine(“File:?“?+?e.FullPath?+?“?“?+?e.ChangeType);
????????????
????????????if?(e.ChangeType?==?WatcherChangeTypes.Deleted)
????????????{
????????????????((FileSystemWatcher)source).EnableRaisingEvents?=?false;
????????????????//string?fn?=?e.Name.Substring(e.Name.LastIndexOf(‘\\‘)+1);
????????????????File.Delete(dest?+?“\\“?+?e.Name);
????????????????((FileSystemWatcher)source).EnableRaisingEvents?=?true;
????????????????return;
????????????}
????????????
????????????//runlog(“File:?“?+?e.FullPath?+?“?“?+?e.ChangeType);
????????????if?(Directory.Exists(e.FullPath))
????????????????return;
????????????string?destfile;
????????????if?(e.ChangeType?==?WatcherChangeTypes.Created)
????????????{
????????????????Thread.Sleep(1000);
????????????????//destfile=e.Name.Substring(e.Name.LastIndexOf(‘\\‘)+1);
????????????????//File.Copy(e.FullPath?dest?+?“\\“?+?e.Name?true);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄??????????0??2010-06-12?17:02??monitoringform
?????目錄??????????0??2010-06-17?12:04??monitoringform\monitoringform
?????文件????????475??2010-06-17?09:57??monitoringform\monitoringform\App.config
?????目錄??????????0??2010-06-12?17:01??monitoringform\monitoringform\bin
?????目錄??????????0??2010-06-12?17:11??monitoringform\monitoringform\bin\Debug
?????目錄??????????0??2010-06-17?11:40??monitoringform\monitoringform\bin\Debug\log
?????文件???????9931??2010-06-12?20:53??monitoringform\monitoringform\bin\Debug\log\2010-06-12.txt
?????文件????????162??2010-06-17?14:24??monitoringform\monitoringform\bin\Debug\log\2010-06-17.txt
?????文件??????20480??2010-06-17?12:04??monitoringform\monitoringform\bin\Debug\monitoringform.exe
?????文件????????475??2010-06-17?09:57??monitoringform\monitoringform\bin\Debug\monitoringform.exe.config
?????文件??????26112??2010-06-17?12:04??monitoringform\monitoringform\bin\Debug\monitoringform.pdb
?????文件???????5632??2005-11-11?22:25??monitoringform\monitoringform\bin\Debug\monitoringform.vshost.exe
?????文件????????475??2010-06-17?09:57??monitoringform\monitoringform\bin\Debug\monitoringform.vshost.exe.config
?????文件???????5135??2010-06-17?12:04??monitoringform\monitoringform\Form1.cs
?????文件???????2029??2010-06-12?17:02??monitoringform\monitoringform\Form1.Designer.cs
?????文件???????5814??2010-06-12?17:02??monitoringform\monitoringform\Form1.resx
?????文件???????3320??2010-06-12?17:08??monitoringform\monitoringform\monitoringform.csproj
?????目錄??????????0??2010-06-12?17:06??monitoringform\monitoringform\obj
?????目錄??????????0??2010-06-17?12:04??monitoringform\monitoringform\obj\Debug
?????文件????????842??2010-06-12?17:06??monitoringform\monitoringform\obj\Debug\monitoringform.csproj.GenerateResource.Cache
?????文件??????20480??2010-06-17?12:04??monitoringform\monitoringform\obj\Debug\monitoringform.exe
?????文件????????180??2010-06-12?17:06??monitoringform\monitoringform\obj\Debug\monitoringform.Form1.resources
?????文件??????26112??2010-06-17?12:04??monitoringform\monitoringform\obj\Debug\monitoringform.pdb
?????文件????????180??2010-06-12?17:06??monitoringform\monitoringform\obj\Debug\monitoringform.Properties.Resources.resources
?????目錄??????????0??2010-06-12?17:02??monitoringform\monitoringform\obj\Debug\TempPE
?????文件????????741??2010-06-17?16:56??monitoringform\monitoringform\obj\monitoringform.csproj.FileListAbsolute.txt
?????文件????????473??2010-06-12?17:02??monitoringform\monitoringform\Program.cs
?????目錄??????????0??2010-06-12?17:02??monitoringform\monitoringform\Properties
?????文件???????1176??2010-06-12?17:01??monitoringform\monitoringform\Properties\AssemblyInfo.cs
?????文件???????2884??2010-06-12?17:02??monitoringform\monitoringform\Properties\Resources.Designer.cs
............此處省略8個文件信息
- 上一篇:AD9910中文數據手冊
- 下一篇:二叉樹遍歷實驗報告
評論
共有 條評論