ワークフロー4.0カスタムの活動開始を外部処理
-
18-09-2019 - |
質問
私のようにワークフロー4.0いくカスタムの活動を開始する外部実行プログラム、そのプロセスを完了し、その後再開後のワークフロー.
また、以下の例を示す(下部のページの書き方の活動を待っているファイルに到着するための特定のディレクトリ:
私はカップルでの問題の例です。まず、私は次のコード:
void FileCreated(object sender, FileSystemEventArgs e)
{
instance.ResumeBookmark(bookmarkName, e.FullPath);
fsw.Dispose();
}
instance.Resumebookmark(...)
するものではありませんのものがあるのですが instance.BeginResumeBookmark
や instance.EndResumeBookmark
ます。
私のものの美しく雄大なぢ大自然に包方法の変更この周辺への対応外部プロセスだけでなく、観賞の内容をクリックします。
これも最適なアプローチこのようなことがいえるでしょう?
解決
私はAyncCodeActivityを書くことをお勧めして完全にブックマークを避けるだろう。ここで、結果としてプロセスの終了コードを返すカスタムアクティビティの例である:
public sealed class RunProcess : AsyncCodeActivity<int>
{
public InArgument<string> FileName { get; set; }
public InArgument<string> Arguments { get; set; }
private Func<string, string, int> runProcessAsyncCall;
protected override IAsyncResult BeginExecute(AsyncCodeActivityContext context, AsyncCallback callback, object state)
{
this.runProcessAsyncCall = this.RunProcessImpl;
return runProcessAsyncCall.BeginInvoke(FileName.Get(context), Arguments.Get(context), callback, state);
}
protected override int EndExecute(AsyncCodeActivityContext context, IAsyncResult result)
{
return this.runProcessAsyncCall.EndInvoke(result);
}
private int RunProcessImpl(string fileName, string arguments)
{
Process p = Process.Start(fileName, arguments);
p.WaitForExit();
return p.ExitCode;
}
}
外部イベントが潜在的に長い時間のために来ることはありません場合は、一般的には、ブックマークが素晴らしいです。あなたが起動しているプロセスは短命である場合は、AsyncCodeActivityは(それは確かに管理するために、簡単に一つです)、より良い選択かもしれません。
他のヒント
このアプローチコンビニエンスストアでも走ります。使用します。WaitForExitチェック処理が行われ、任意の確認 ExitCode, 再開のブックマーク.
所属していません StackOverflow