2011-08-18 56 views
0

我學習.NET和按以下http://www.beansoftware.com/NET-Tutorials/Create-Windows-Services.aspx我怎麼叫我的功能.NET

Windows服務被成功安裝並啓動太教程編寫的服務。但是,當我更改文件名或刪除文件或添加一個文件,它不添加任何信息到我的日誌文件,該文件是在 C:\文件夾\ FolderLog.txt

我看到FolderWatcher_ * 3種方法*但我沒有看到在代碼中的調用。我是很新的.NET,所以我不知道他們是如何被稱爲

這裏是我完整的代碼

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Diagnostics; 
using System.Linq; 
using System.ServiceProcess; 
using System.Text; 
using System.IO; 

    namespace Watcher 
    { 
     public partial class Watcher : ServiceBase 
     { 
      public Watcher() 
      { 
       InitializeComponent(); 
      } 

      protected override void OnStart(string[] args) 
      { 

      } 

      protected override void OnStop() 
      { 
      } 

      private void FolderWatcher_Created(object sender, System.IO.FileSystemEventArgs e) 
      { 
       TextWriter writer = new StreamWriter("C:\\folder\\FolderLog.txt", true); 
       writer.WriteLine(DateTime.Now + " A new folder/file with name " + e.Name + " has been created. "); 
       writer.Close(); 
      } 

      private void FolderWatcher_Deleted(object sender, System.IO.FileSystemEventArgs e) 
      { 
       TextWriter writer = new StreamWriter("C:\\folder\\FolderLog.txt", true); 
       writer.WriteLine(DateTime.Now + " A new folder/file with name " + e.Name + " has been deleted. "); 
       writer.Close(); 
      } 

      private void FolderWatcher_Renamed(object sender, System.IO.RenamedEventArgs e) 
      { 
       TextWriter writer = new StreamWriter("C:\\folder\\log.txt", true); 
       writer.WriteLine(DateTime.Now + " A new folder/file with name " + e.Name + " has been renamed. "); 
       writer.Close(); 
      } 


     } 
    } 

我按照該教程中每一個步驟。我還沒有看到任何描述這些方法被調用的東西。任何幫助將是巨大的

+0

也許,我不確定,因爲我從來沒有創建過服務,可能會有權限問題。特別是Windows 7的權限有點嚴格(更好),如果您不是管理員,則無法在某些路徑上寫入。希望以某種方式提供幫助 –

+0

您是否按照本教程中的步驟6操作 - 將設計器創建的FolderWatcher掛接到上面顯示的事件處理程序? –

回答

1

確保您註冊觀察者實例「FolderWatcher」到事件處理程序的事件在你的代碼,你可以這樣做,在服務設計或服務的構造函數,如:

public Watcher() 
{ 
    InitializeComponent(); 

    FolderWatcher.Created += FolderWatcher_Created;//when created FolderWatcher_Created will be called 
    FolderWatcher.Deleted += FolderWatcher_Deleted;//when deleted call FolderWatcher_Deleted will be called 
    FolderWatcher.Renamed += FolderWatcher_Renamed;//when renamed FolderWatcher_Renamed will be called 
} 
+0

你真棒... – Autolycus

+0

我希望我可以upvote你 – Autolycus

+0

不客氣:)) –

3

本教程可能讓您在設計模式界面中爲您的服務添加FileSystemWatcher。在設計模式中,選擇該對象並在其事件處理程序中選擇適當的方法。

+0

確實它確實... – Jon