2011-08-19 8 views
2

背景情報:ファイルの変更を監視するサービスに実装されたFileSystemWatcherクラスを使用しています。 onCreateイベントがトリガされたときに、引数例外(パスは正式な形式ではありません)をスローするコーディングのセクションを示します。引数例外(パスは正当な形式ではありません)

FileMonitor.CS

public partial class FileMonitor:ServiceBase 
{ 
public FileSystemWatcher Watcher = new FileSystemWatcher(); 

    Private void FileWatcher() 
    { 
    FileActionHandler ActionHandler = new FileActionHandler(); 
    Watcher.Created += new FileSystemEventHandler(ActionHandler.onCreate); 
    Watcher.Deleted += new FileSystemEventHandler(ActionHandler.onDelete); 
    Watcher.Renamed += new RenamedEventHandler(ActionHandler.onRenamed); 
    Watcher.EnableRaisingEvents = true; 
    } 
} 

FileActionHandler.CS

class FileActionHandler 
{ 
    FileMonitor FileMon = new FileMonitor(); 
    public void onCreate/onRename/onDelete(object source, FileSystemEventArgs e) 
    { 
     try 
     { 
     FileMon.Watcher.EnableRaisingEvents = false; 
     } 
     catch 
     { 
     /* Exception Code */ 
     } 
     finally 
     { 
     FileMon.Watcher.EnableRaisingEvents = true; 
     } 
    } 
    } 

質問: 誰でも例外がスローされている理由で私をアドバイスすることができ、どのように私はそれを解決して行くことができますか?

+0

を役に立てば幸い? –

+0

それは問題です。私はどの行が例外をスローするのか知りません。しかし、コードのこのセクションに絞って、例外がスローされました。 – Derek

+0

ここに投稿する前にコードを簡略化したと思います。実際のコードを投稿できますか? –

答えて

5

私は数週間前に私が行ったときに同じ問題に遭遇しました。 私が見つけたのは、何かを設定する前にパスを設定する必要があるということでした。 だから、あなたがオブジェクトを宣言した直後:

FileSystemWatcher watchfolder = new FileSystemWatcher(); 
watchfolder.Path = ConfigurationManager.AppSettings["MonitorPath"]; 

あなたがもっとここで読むことができます。 Create a file watcher service for windows

を、私は、これはラインが例外をスローし

+0

アイデアイベントハンドラのマルチスレッドを組み込むにはどうすればよいですか? – Derek

+0

ファイルウォッチャーサービスを使用してマルチスレッドを行うことはできません。申し訳ありません:( – Savage

+0

MultiThreading/AsyncはTPLで行うことができますActionBlock用のSeach –

関連する問題