IFix 調度後臺任務被關閉如何處理

在 IFix 使用過程中經常會使用到調度功能來實現定時報告,事件觸發類的腳本,那麼後臺調度的進程也會出現被操作人員等意外關閉的情況。那麼就會造成我們的定時報告,腳本等無法正常運行。

IFix 調度後臺任務被關閉如何處理

那麼如何保證在後臺調度被異常關閉後可以自動啟動呢?那麼下面就介紹一種方法。

思路:在一個一直被打開的畫面(比如導航欄畫面)中放一個定時器,循環檢測調度是否啟動,如果調度沒啟動就自動啟動調度。 防止別人關閉了後臺任務窗口。如果調度設置為後臺運行,那麼任務中的 FixBackgroundServer.EXE 也必須設置為後臺運行。

具體步驟如下:

1)在 SCU中檢查 FixBackgroundServer.EXE 為後臺方式,並查看調度是否也是後臺方式運行。如下圖:


IFix 調度後臺任務被關閉如何處理

SCU 後臺任務

2)在導航欄添加一個定時器,設置定時器的名稱:diaodu,以及定時器的時間間隔: 1000毫秒。

IFix 調度後臺任務被關閉如何處理

定時器設置



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 後,關閉後臺任務後,觀測後臺任務是否又自動啟動。


IFix 調度後臺任務被關閉如何處理

後臺任務

那麼今天關於 IFix 調度異常關閉再次自動啟動的方法就介紹到這裡。以上代碼可以直接複製使用。工程中測試過。


分享到:


相關文章: