WF4定制并行活动

时间:2013-08-29 21:07:46

标签: workflow-foundation-4

从一些文章中读取,并行活动不会在不同的线程中执行子活动,除非子活动本身是异步的。        所以我刚刚构建了一个名为AsyncTask的自定义AsyncCodeActivity,它有一个Activity(名为SyncActivity)作为InArgument,在BeginExecute中我调用了Task.Factory.StartNew(()=> WorkflowInvoker(SyncActivity))。         但是我也想要一个看起来与Parallel Activity完全相似的设计器,并且具有相同的功能(比如拖动一些活动并将其放在其中一个分支中)作为Parallel Activity。但是当一些Activity被拖放到其中一个分支中时,它应该使用AsyncTask AsyncActivity在内部异步运行。          我该怎么做?

1 个答案:

答案 0 :(得分:1)

我理解你的问题。建立一个活动设计师(WF中的控制)并不难。只需使用WorkflowItemPresenter like shown on MSDN

为了满足您的进一步要求,我们必须记住,活动需要参数。您必须通过外部AsyncActivity将它们传递给SyncActivity。因此,您必须通过动态创建的输入控件来增强您的活动设计器。要创建那些您需要访问SyncActivity的公共属性(例如反射)。我发现甚至很难访问内部活动,因为你必须通过一个所谓的“ModelItem”来自己工作。 更简单的方法可能是通过创建变量链来传递参数。

顺便说一句:任务工厂可以帮助您创建任务,但它不会强制创建新线程。只需记住任务/线程模型; - )

此致 扬