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 (, , ).