2011年7月27日水曜日

標準アクティビティだけで BAT ファイルを置換(2)

前回の記事で外部プロセスを起動するように Assign アクティビティを利用する方法を書きました。今回はそのようにして起動したプロセスが終了するまで待機させる方法を書きます。

BATファイル等で外部プロセスを起動する場合、かなりの割合で同期制御(終了するまで待機 = Start /w 等で実行)を行うのではないかと思います。これを普通にコーディングで実行するのであれば、次のようになります。


   1: Dim resProc (As Process) = Process.Start(“notepad.exe”)
2: resProc.WaitForExit()

ワークフロー上でこのような事を行う場合、標準アクティビティでは InvokeMethod アクティビティを利用します。InvokeMethod アクティビティ自体については過去の記事でも触れましたが、クラスを指定してメソッド呼び出しを行うものです。このような感じで利用します。

WaitForExit

今回は前回利用したワークフローに追加しています。Assign アクティビティにて起動したメモ帳を終了するまで後続の InvokeMethod アクティビティにて待機させています。起動時に Process.Start メソッドの戻り値として取得した結果(Processクラスのインスタンス)のメソッドを呼び出しますので、TargetType は null のままにしておき TargetObject に戻り値の変数を設定します。MethodName には今回呼び出したい WaitForExit とメソッド名を設定します。

以上の設定にて、起動した外部プロセスが終了するまで待機するワークフローができあがります。

0 件のコメント:

コメントを投稿