<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post//</link>
<title><![CDATA[利用aardio语言的fsys.dirWatcher监听目录文件变化的后台服务程序]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[服务器技术]]></category>
<pubDate>Sat, 30 Dec 2023 14:47:47 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	示例一：<br/><div class="code"><br/><br/>namespace service.threads;<br/><br/>//服务主线程<br/>main = function(serviceName)&#123;<br/>&nbsp;&nbsp;import service;<br/>&nbsp;&nbsp;import thread.event; <br/>&nbsp;&nbsp;import fsys.log;<br/>&nbsp;&nbsp;import console;<br/>&nbsp;&nbsp;import sys.volume;<br/>&nbsp;&nbsp;import process; <br/>&nbsp;&nbsp;import fsys.dirWatcher;<br/>&nbsp;&nbsp;import fsys.dlg.dir;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;service.msgbox(&quot;服务已启动&quot;);<br/>&nbsp;&nbsp;console.open();<br/>&nbsp;&nbsp;//取所有分区信息<br/>&nbsp;&nbsp;var drives = sys.volume.getLogicalDrives()<br/>&nbsp;&nbsp;for(i,drv in drives)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var info = sys.volume.getInfo( drv );<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(info)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var watchDir = info.drive;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; watcher = fsys.dirWatcher( watchDir )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( filename,action in watcher.eachChanges() )&#123;<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsys.log.print( watchDir + &quot;&#92;&quot; + filename,&quot; -&gt; &quot;,action,&#039;&#92;r&#92;n&#039;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log( watchDir + &quot;&#92;&quot; + filename,&quot; -&gt; &quot;,action,&#039;&#92;r&#92;n&#039;)<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&#125;<br/><br/>//注意这也是一个独立的线程，用户控制服务停止或启动时都会触发此函数<br/>control = function(control,eventType,pEventData)&#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;import service;<br/>&nbsp;&nbsp;&nbsp;&nbsp;import thread.event;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var evtTask = thread.event(&quot;NT.SERVICE.CONTROL.&quot; + owner.serviceName,false); <br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if( control == 0x1/*_SERVICE_CONTROL_STOP*/ )&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//控制线程中更新srvStatus，第一个参数只要指定需要更新的字段就行了<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service.updateStatus(&#123;currentState = 0x3/*_SERVICE_STOP_PENDING*/&#125;,owner.serviceName);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evtTask.set();//使事件对象切换为有信号状态,使wait函数退出&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;return 0x0/*_NOERROR*/<br/>&#125;<br/><br/></div><br/><br/>示例二：<br/><div class="code"><br/><br/>namespace service.threads;<br/><br/>//服务主线程<br/>main = function(serviceName)&#123;<br/>&nbsp;&nbsp;import service;<br/>&nbsp;&nbsp;import thread.event; <br/>&nbsp;&nbsp;import fsys.log;<br/>&nbsp;&nbsp;import console;<br/>&nbsp;&nbsp;import win.ui;<br/>&nbsp;&nbsp;import fsys.dirWatcher;<br/>&nbsp;&nbsp;import fsys.dlg.dir;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;//用win.form创建一个线程外包对象<br/>&nbsp;&nbsp;var winform = win.form();<br/>&nbsp;&nbsp;winform.messageOnly();//告诉他不需要显示窗口，只保留能处理消息的功能<br/>&nbsp;&nbsp;var watchDir = &quot;C:&quot;;<br/>&nbsp;&nbsp;//创建监视线程 <br/>&nbsp;&nbsp;winform.thrdWatcher = fsys.dirWatcher.thread(<br/>&nbsp;&nbsp;&nbsp;&nbsp;function(filename,action,actionText)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fsys.log.print( watchDir + &quot;&#92;&quot; + filename,&quot; -&gt; &quot;,action,&#039;&#92;r&#92;n&#039;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log( watchDir + &quot;&#92;&quot; + filename,&quot; -&gt; &quot;,action,&#039;&#92;r&#92;n&#039;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;, watchDir); <br/>&nbsp;&nbsp;win.loopMessage();<br/><br/>&#125;<br/><br/>//注意这也是一个独立的线程，用户控制服务停止或启动时都会触发此函数<br/>control = function(control,eventType,pEventData)&#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;import service;<br/>&nbsp;&nbsp;&nbsp;&nbsp;import thread.event;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var evtTask = thread.event(&quot;NT.SERVICE.CONTROL.&quot; + owner.serviceName,false); <br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if( control == 0x1/*_SERVICE_CONTROL_STOP*/ )&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//控制线程中更新srvStatus，第一个参数只要指定需要更新的字段就行了<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service.updateStatus(&#123;currentState = 0x3/*_SERVICE_STOP_PENDING*/&#125;,owner.serviceName);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;evtTask.set();//使事件对象切换为有信号状态,使wait函数退出&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;return 0x0/*_NOERROR*/<br/>&#125;<br/><br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] 利用aardio语言的fsys.dirWatcher监听目录文件变化的后台服务程序]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.dzhope.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>