完全非同期モード
導入された関数:
完全非同期モードは、Creo TOOLKIT アプリケーションが Creo+ からの要求を処理する方法を除けば単純非同期モードと同じです。単純非同期モードの場合、このような要求を処理することができません。完全非同期モードの場合、アプリケーションは、Creo+ から到着するメッセージを "聞く" 制御ループを実装する必要があります。その結果、Creo+ は、メニューボタンや通知のコールバック関数を含む、アプリケーション内の関数を呼び出すことができます。
完全非同期モードで実行しているアプリケーションの制御ループは、引数を使用しない関数
ProEventProcess() の呼び出しを含む必要があります。この関数は、同期モードと似た方法で
Creo+ のメッセージに応答します。たとえば、アプリケーションによって追加されたメニューボタンをユーザーが選択すると、
ProEventProcess() はコールバック関数の呼び出しを処理し、その呼び出しが完了すると復帰します(メニューボタンの追加およびコールバック関数の詳細については、
ユーザーインタフェース: メニュー、コマンド、ポップアップメニューのセクションを参照してください)。
完全非同期モードのアプリケーションでは、イベント処理ループを自分で記述する代わりに、関数
ProAsynchronousEventLoop() で済ませることもできます。この関数を呼び出すと、アプリケーションは
Creo+ からイベントが渡されるのを待ちます。アプリケーションが待っている間、その他の処理が行われません。
ProAsynchronousEventLoopInterrupt() が
Creo TOOLKIT コールバック処理から呼び出されるか、
Creo+ が終了していることをアプリケーションが検出するまで、ループは続行します。
完全非同期アプリケーションにおいて、
Creo+ プロセスの終了イベントの受け取りが必要になる場合があります。特に、
Creo+ が実行されていない状況では、制御ループは
Creo+ メッセージをリッスンし続ける必要はありません。関数
ProTermFuncSet() は、
Creo+ の終了時に実行する終了処理を関連付けます。終了処理については、
ProTerminationAction 型の関数ポインタを使用して
ProTermFuncSet() の入力にユーザー関数を指定します。終了処理への入力には、次のいずれかの終了のタイプを使用します。
• PROTERM_EXIT - 正常終了 (ユーザーがメニューの「終了」(Exit) を選択する)
• PROTERM_ABNORMAL - エラーステータスで終了します。
• PROTERM_SIGNAL - 重大シグナルが生成されます。
アプリケーションは終了タイプを解釈し、適切な処理を実行します。