2014-05-22 77 views
1

我知道如何使用FileSystemWatcher類,並且我知道如何發送我想發送的消息。我想不出的是在哪裏初始化FileSystemWatcher如何在創建文件時發送NServiceBus消息?

我假設有一些地方初始化Endpoint我可以設置這個,但我不確定那會是。

似乎是這樣一個常見的用例;我有點驚訝,Udi沒有把它建成NServiceBus!

回答

0

我要去嘗試以下告訴你,如果它的工作:

一個創建FileWatcher類。靜態布爾變量'keepChecking'

b。一個靜態方法watchFiles()啓動FileSystemWatcher,然後通過一個循環來保持活動狀態,該循環測試keepChecking

b。的的OnChange等FileSystemWatcher的事件處理程序 - 這在由FileSystemWatcher的觸發,可能發出NServiceBus事件

  • 要啓動監視器(在我的NSB主持節目)你運行WatchFiles()方法在從IWantToRunWhenBusStartsAndStops繼承的初學者類中的單獨線程中。

  • 要停止觀察者,首先將watcher.EnableRaisingEvents設置爲false,然後將keepWatching設置爲false,以便循環結束。

  • 在此的StackOverflow問題與代碼類似的方法:從泰勒日 NServicebus with File System Watcher

    除了他將starter類與filewatcher類及其在同一線程中運行的(非靜態)創建方法統一在一起。有趣的是,它不需要Keepalive循環,因爲FileSystemWatcher事件訂閱被定義爲靜態的。

    他被告知,這不是最好的方式去,並給出了兩個建議:a。使用「衛星級」或b。將整個事物移動到一個單獨的類中,使fileWatcher本身爲靜態。沒有提到Keepalive循環。我也會嘗試。