使用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 (opens new window)。
若要等待非同步方法完成,您可執行下列其中一項操作:
- 執行WaitCommandComplete方法。
- 將AsyncMode屬性設為False。
如果因為錯誤(例如指定點不存在)而無法啟動非同步命令,將會立即出現例外。不過,如果在非同步執行命令期間發生錯誤,則會在執行下一個非同步命令、執行WaitCommandComplete或AsyncMode設為False時出現錯誤例外。如果在執行下一個命令時出現例外,您會不知道是哪個陳述式導致錯誤(上一個或目前陳述式)。如果您需要在執行其他命令前檢查非同步命令是否成功完成,則在執行下一個命令前調用WaitCommandComplete。如果在上一個非同步命令期間發生錯誤,SpelException例外將會與錯誤編號及訊息一起顯示。請參閱以下範例。
VB 例:
Try
m_spel.AsyncMode = True
m_spel.Go(1)
' 在動作期間於此處執行其他操作
' 如果Go(2)執行時出現錯誤,Go(1)在執行期間出現異常,
' 則我們無法得知錯誤發生於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(2)執行時出現錯誤,Go(1)在執行期間出現異常,
// 則我們無法得知錯誤發生於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 →