使用 AsyncMode
AsyncMode 允许在执行其他方法时执行 Spel 方法。仅允许异步执行以下 Spel 类方法:
使用 AsyncMode
Arc | Jump3 |
Arc3 | Jump3CP |
BGo | MCal |
BMove | Move |
CVMove | Pass |
Go | PTran |
Home | Pulse |
JTran | TGo |
Jump | TMove |
若要异步执行方法,需将 AsyncMode 属性设为 True,然后执行方法。当 AsyncMode 属性为 true 并执行异步方法时,方法将开始且控制将立即返回至 .NET 应用进行进一步处理。如果您在之前的方法执行过程中执行另一异步方法,则 SPEL 会等第一个方法完成,然后再开始下一方法并返回至 .NET。
若要等异步方法完成,可使用以下方式之一:
- 执行 WaitCommandComplete 方法。
- 将 AsyncMode 属性设为 False。
若异步命令由于错误无法开始(例如点不存在),将立即发生异常。但若在命令异步运行期间发生错误,则错误异常将在下次执行异步命令、执行 WaitCommandComplete 或将 AsyncMode 设为 False 时发生。若在下一个命令发生异常,您无法知道哪个语句导致了错误(之前语句或当前语句)。若需要在执行另一个命令前确认异步命令是否已成功完成,则应在下一个命令前调用 WaitCommandComplete。若在之前的异步命令期间发生错误,将发生带有错误编号和消息的 SpelException 异常。请参见以下示例。
VB 例:
Try
m_spel.AsyncMode = True
m_spel.Go(1)
' 此处在移动时执行其他操作
' 若 Go(1)执行期间有错误,执行 Go(2) 时发生异常
' 因此,无法确定错误事在 Go(1) 还是 Go(2)
m_spel.Go(2)
m_spel.Go(3)
' 此处在移动时执行其他操作
' 确认 Go(3) 是否正常执行
m_spel.WaitCommandComplete() ' 若 Go(3) 有错误,将发生异常
m_spel.Go(4)
Catch ex As SpelException
' 处理错误异常
End Try
C# 例:
try {
m_spel.AyncMode = true;
m_spel.Go(1);
// 此处在移动时执行其他操作
// 若 Go(1)执行期间有错误,执行 Go(2) 时发生异常
// 因此,无法确定错误事在 Go(1) 还是 Go(2)
m_spel.Go(2);
m_spel.Go(3);
// 此处在移动时执行其他操作
// 确认 Go(3) 是否正常执行
m_spel.WaitCommandComplete();
// 若 Go(3) 有错误,将发生异常
m_spel.Go(4);
}
catch(RCAPINet.SpelException ex) {
// 处理错误异常
}
← 使用多视频显示 SPELCom_Event →