BerlinBrown a écrit :
> Thanks all, this is what I ended up with:
> For noobs like myself,  I am using this code to monitor files and
> refresh it when the file gets modified.  I used 'ref' and 'agent'.
>
> (def  file-monitor-agent (agent false))
> (def  file-state (ref {:open-state false}))
> (defn get-file-state [] (@file-state :open-state))
> (defn set-file-state [state] (dosync (commute file-state assoc :open-
> state state)))
>
> (defn file-monitor-loop []
>   (let [delay-t (prop-int resources-core-sys
> "Octane_Sys_filemonitor_delay")
>         enable-file-mon (prop-bool resources-win-opts
> "file_monitor_enabled")]
>     (send file-monitor-agent
>           (fn [_]
>               (when enable-file-mon
>                 (loop []
>                   (when (not (. shell (isDisposed)))
>                     (. Thread sleep delay-t)
>                     (println "Woot!!!")
>                     (recur))))))))
>   
Since the action you send to your agent doesn't end you should send it 
using send-off ('send-off will give your action its own thread while 
'send use a fixed thread pool).
But, given that you don't care about the agent value, it would be better 
to simply use a thread (clojure's fns are Runnables):

(defn file-monitor-loop []
  (let [delay-t (prop-int resources-core-sys
"Octane_Sys_filemonitor_delay")
        enable-file-mon (prop-bool resources-win-opts
"file_monitor_enabled")]
    (when enable-file-mon
      (.start (Thread. 
                #(while (not (.isDisposed shell))
                   (Thread/sleep delay-t)
                   (println "Woot!!!")))))))          
 

Christophe

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to