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) {
// エラー例外を処理する
}