可以使用 App 对象的两个属性设置,决定 Visual Basic 何时显示“部件忙”和“部件请求挂起”对话框的超时间隔。
决定在显示“部件忙”对话之前,Visual Basic 反复尝试 Automation 请求的时间。缺省值是 10000 毫秒(10 秒)。
决定在显示“部件请求挂起”对话框期间,在响应鼠标单击、按键事件和其它事件之前,Visual Basic 要等待多久。缺省值是 5000 毫秒(5 秒)。
下面例子演示,为调用假设的 BusinessRules 对象的 StockAnalysis 方法,如何调整和重新设置超时值。
Public Sub SetTimeouts(ByVal lngComponentBusy As _ Long, ByVal lngRequestPending As Long) App.OLEServerBusyTimeout = lngComponentBusy App.OLERequestPendingTimeout = lngRequestPending End Sub Public Sub ResetTimeouts() App.OLEServerBusyTimeout = 10000 App.OLERequestPendingTimeout = 5000 End Sub Private Sub cmdFullAnalysis_Click() On Error Goto FullAnalysis_Error '
设置很短的超时。2
秒钟之后用户将被提醒,'
并且按键或单击将显示“部件忙”和“部件请求挂起”对话框。SetTimeouts 2, 2
Me.MousePointer = vbHourglass
gobjBusinessRules.StockAnalysis txtNYSECode.Text, _
ATYPE_FULL
FullAnalysis_Cleanup:
Me.MousePointer = vbDefault
ResetTimeouts
Exit Sub
FullAnalysis_Error:
If Err.Number = &h80010001 Then
MsgBox "Analysis cancelled"
Else
'
处理其它错误的代码...
End If
Resume FullAnalysis_Cleanup
End Sub
可以把这些超时中的任一个设置成很大的值,因为它们作为长整型数据 (Longs) 存储。例如,86,400,000 毫秒是一天,这等同于无穷超时。但是当这样做时,在部件不再忙或请求挂起完成之前,有把程序锁死的危险。
重点 由于这些超时值是 App 对象的属性,它们也对用 OLE 容器控件或工具箱链接或嵌入的文档起作用。如果正在使用链接的或嵌入的文档,并且为 Automation 请求改变了这些属性,那么完成以后应重新设置其值。