我必須創建一個程序來監視文件大小的變化。我已經做了一個簡單的Windows服務和文件系統監視器,所以我現在對這個概念很熟悉。我還製作了一個代碼,用於檢查文件大小(將其作爲表單按鈕),但尚未在我的文件系統監視器中實現。如何創建一個具有監視文件大小的filewatcher的Windows服務?我必須將文件系統監視器放在Windows服務中,並通過OnStart方法調用監視器嗎?Windows服務w/FileSystemWatcher在C#
回答
如果您正在製作Window的服務,那麼您需要以編程方式進行操作。我通常會將表單從我的服務中刪除,併爲他們建立一個單獨的界面進行交流。現在FileSystemWatcher沒有一個事件只能看大小,所以您需要創建一個與FileSystemWatcher.Changed綁定的方法來檢查對現有文件的修改。在OnStart方法中聲明並初始化控件,並將事件連接在一起。在OnStop方法中執行任何清理代碼。它應該是這個樣子:
protected override void OnStart(string[] args)
{
FileSystemWatcher Watcher = new FileSystemWatcher("PATH HERE");
Watcher.EnableRaisingEvents = true;
Watcher.Changed += new FileSystemEventHandler(Watcher_Changed);
}
// This event is raised when a file is changed
private void Watcher_Changed(object sender, FileSystemEventArgs e)
{
// your code here
}
還要注意,在FileSystemWatcher的將火過多個事件爲單個文件,所以當你正在調試手錶的模式來解決它。
你可以簡單地通過設置
EnableRaisingEvents = true;
然後處理該事件能夠在OnStart方法你FileSystemWatcher的對象。這應該做到這一點。
默認值會是真的 – Peru 2012-08-17 04:23:32
也許。 [MSDN](http://msdn.microsoft.com/zh-cn/library/system.io.filesystemwatcher.enableraisingevents.aspx) - 「如果組件已啓用,則爲true;否則爲false。默認爲false。如果您正在使用Visual Studio 2005中的設計器上的組件,默認值爲true。「 – 2012-08-17 14:29:17
您可以創建一個委託來處理髮生了什麼變化像
myWatcher.Changed += new FileSystemHandler(FSWatcherTest_Changed);
private void FSWatcherTest_Changed(object sender,
System.IO.FileSystemEventArgs e)
{
//code here for newly changed file or directory
}
等等
我建議你閱讀這篇文章http://www.codeproject.com/Articles/18521/How-to-implement-a-simple-filewatcher-Windows-serv
也有這個代表on_start
在窗口服務
- 1. Windows服務C
- 2. Windows服務 - C#
- 3. AssemblyResolve在Windows服務C#
- 4. C++ windows curl服務
- 5. C#的Windows服務
- 6. 在Windows上安裝C#Windows服務7
- 7. 檢測Windows 2008服務器和Windows 2003服務器在C#
- 8. C#Windows服務替代
- 9. C++ Windows服務錯誤1063
- 10. C#Windows服務運行
- 11. C#windows服務位置
- 12. Windows服務狀態C++?
- 13. System.Security.SecurityException C#2.0的Windows服務
- 14. c + + windows服務沒有ATL
- 15. C#Express中的Windows服務
- 16. 使用Windows服務(c#)
- 17. C#Windows服務的安全
- 18. windows服務開發c#
- 19. C#Windows服務默認GroupOrderList
- 20. C#查詢Windows服務
- 21. Windows服務時間C#
- 22. 有關Windows服務的C#
- 23. C++中的windows服務
- 24. C#Windows服務問題
- 25. 是一個c + + windows服務比.net windows服務更穩定 - ?
- 26. 如何使用C#.NET中的Windows服務調用Windows服務?
- 27. 附帶Windows服務的C#Windows窗體
- 28. 在c中重新啓動Windows服務#
- 29. 在Windows服務中使用.xml c#
- 30. 在C++中設置Windows服務描述
所以我不應該在服務窗口中的工具箱中添加任何項目。謝謝!我會盡快嘗試。這真的有幫助 – 2012-08-17 03:50:13
我會遠離它。在運行服務時,Windows自然會禁用表單集成,並且您必須在安裝後配置該服務以允許它。如果它只是你的眼睛看到的東西,那麼它可能不是什麼大不了的事,但避免這種發展風格(出於安全原因)是一個好習慣。 – 2012-08-17 03:56:50
更新:在Windows Vista&Win 7中,允許桌面交互的選項已完全刪除。在發佈時沒有意識到這一點。 – 2012-08-20 16:33:50