在 IFix 使用過程中經常會使用到調度功能來實現定時報告,事件觸發類的腳本,那麼後臺調度的進程也會出現被操作人員等意外關閉的情況。那麼就會造成我們的定時報告,腳本等無法正常運行。
那麼如何保證在後臺調度被異常關閉後可以自動啟動呢?那麼下面就介紹一種方法。
思路:在一個一直被打開的畫面(比如導航欄畫面)中放一個定時器,循環檢測調度是否啟動,如果調度沒啟動就自動啟動調度。 防止別人關閉了後臺任務窗口。如果調度設置為後臺運行,那麼任務中的 FixBackgroundServer.EXE 也必須設置為後臺運行。
具體步驟如下:
1)在 SCU中檢查 FixBackgroundServer.EXE 為後臺方式,並查看調度是否也是後臺方式運行。如下圖:
2)在導航欄添加一個定時器,設置定時器的名稱:diaodu,以及定時器的時間間隔: 1000毫秒。
3)編寫定時器的腳本。首先定義一個 “Function” , 然後編寫定時器的腳本。
<code>Private Function CheckSchedulerIsRun(exeName As String) As Boolean/<code>
<code> On Error GoTo Err/<code>
<code> Dim WMI/<code>
<code> Dim Obj/<code>
<code> Dim Objs/<code>
<code> CheckExeIsRun = False/<code>
<code> Set WMI = GetObject("WinMgmts:")/<code>
<code> Set Objs = WMI.InstancesOf("Win32_Process")/<code>
<code> For Each Obj In Objs/<code>
<code> If (InStr(UCase(exeName), UCase(Obj.Description)) <> 0) Then/<code>
<code> CheckExeIsRun = True/<code>
<code> If Not Objs Is Nothing Then Set Objs = Nothing/<code>
<code> If Not WMI Is Nothing Then Set WMI = Nothing/<code>
<code> Exit Function/<code>
<code> End If/<code>
<code> Next/<code>
<code> If Not Objs Is Nothing Then Set Objs = Nothing/<code>
<code> If Not WMI Is Nothing Then Set WMI = Nothing/<code>
<code> Exit Function/<code>
<code>Err:/<code>
<code> If Not Objs Is Nothing Then Set Objs = Nothing/<code>
<code> If Not WMI Is Nothing Then Set WMI = Nothing/<code>
<code>End Function/<code>
定時器腳本程序如下:
<code>Private Sub diaodu(ByVal lTimerId As Long)/<code>
<code> If CheckSchedulerIsRun("FIXBACKGROUNDSERVER.EXE") = False Then /<code>
<code>\tShell System.FixPath(Base_Path) & "\\FIXBACKGROUNDSERVER.EXE"/<code>
<code> end if/<code>
<code>End Sub/<code>
至此所有設置完成,運行 IFix 後,關閉後臺任務後,觀測後臺任務是否又自動啟動。
那麼今天關於 IFix 調度異常關閉再次自動啟動的方法就介紹到這裡。以上代碼可以直接複製使用。工程中測試過。
閱讀更多 劍指工控 的文章