Event Invoke

Friendly Name Event Invoke
API Name EventInvoke
Type Integer
Restrictions Range is 0 - 1
Get Function   (dcl-Control-GetEventInvoke <CONTROL>)
Set Function   (dcl-Control-SetEventInvoke <CONTROL> NewValue [as Integer])
Applies To All Controls and Forms

此属性控制是同步还是异步调用事件处理程序。 同步调用导致对话框代码等待直到事件处理程序在恢复之前返回; 异步事件调用允许对话框代码继续运行,并且在AutoCAD准备好处理命令之前不会执行事件处理程序。 对于模态窗体的控件,此属性被隐藏和忽略。

Value Meaning
0 Synchronous
1 Asynchronous

同步调用的事件处理程序在它们可以安全执行的操作方面受到限制,因为它们在对话框代码处于暂停状态时运行,并且AutoCAD无法处理命令。例如,不可能从同步事件处理程序调用AutoLISP(命令)函数。

在大多数情况下,异步事件处理程序将不会执行,直到触发它的事件已经过去,但异步事件处理程序可以安全地调用AutoLISP(命令)函数来处理AutoCAD命令。当非模态对话框控件的事件处理程序需要使用AutoLISP(命令)函数时,控件的Event Invoke属性必须设置为1。

任何具有返回值的事件总是被同步调用(否则返回值将丢失)。从模态窗体调用的事件总是同步调用,因为模态窗体的性质会阻止AutoCAD在活动时执行命令。在这些情况下,事件处理程序必须符合同步事件的要求,而不管事件调用属性设置如何。