使用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) {  
  // 處理錯誤例外  
}