设置一个属性或调用一个对象方法通常只要零点几秒。但是这些请求常常不会立即完成。请看以下几种情况:
部件忙
状态。部件忙
就如同打电话时的占线信号(忙音)。知道打不通,您会挂机稍等之后再试。
请求挂起
就象电话打通了,但是去找接电话的人让您等待的时间比您预计的要长得多。如果把您的请求序列化,那么请求挂起就如同另一方提起了话机但马上说”请等候,别挂机。”
部件可以拒绝您的请求因为有一个模态对话框打开着,或者因为用户的编辑操作在进行中。例如,当电子数据表单元在编辑时,Microsoft Excel 拒绝客户端应用程序的请求。
Visual Basic 假设忙态是暂时的,并以一个规定的超时间隔不停地发出请求。当时间到,Visual Basic 显示“部件忙”对话框,如图 10.6 所示。
图 10.6 “部件忙”对话框
用户可以请求再试、请求取消或转换部件并解决问题(例如,取消对话框)。如果用户选择“取消”,则在发出请求的过程中发生错误 &h8001000 (RPC_CALL_REJECTED)。
一旦部件接受了应用程序的请求,应用程序必须等到请求被完成。如果请求要用较长的时间,用户可试验用最小化程序或重新调整其大小的办法来解决。
在一个短的超时间隔之后,Visual Basic 显示“部件请求挂起”对话以响应这一试验。
“部件请求挂起”对话框的外观和“部件忙”对话框稍有不同。“取消”按钮被取消了,如图 10.7 所示,因为在进行中的请求不能被取消。
图 10.7 “部件请求挂起”对话框
仅该部件暂停,显示作为请求结果的错误消息时,转换到该部件才是有用的。这并不经常发生,因为部件的正常行为是给调用部件的程序返回一个错误状态。
详细信息 请参阅本章后面的“改变部件忙或请求挂起消息”、“控制超时间隔”和“产生部件忙超时错误”。