Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从另一个工作流中运行工作流_C#_.net_Workflow Foundation - Fatal编程技术网

C# 从另一个工作流中运行工作流

C# 从另一个工作流中运行工作流,c#,.net,workflow-foundation,C#,.net,Workflow Foundation,我目前正在Windows WF中使用顺序工作流,但需要中断该过程,因为我现在有多个工作流需要共享一项功能。我相信有一种方法可以在WF中创建自定义代码活动,基本上可以实现这一点,但我的计划是最终抛弃WF,转而采用无状态模式;因此,我现在不想花时间学习如何编写自定义活动 我唯一能想到的是创建一个包含所有“共享”行为的新WF项目,然后从需要它们的工作流中启动它们。我现在正在做这件事,看看进展如何,但有人能告诉我这是不是一个坏主意吗 编辑——我现在看到的一个“问题”是,我在WF运行时使用单例,因为我以前

我目前正在Windows WF中使用顺序工作流,但需要中断该过程,因为我现在有多个工作流需要共享一项功能。我相信有一种方法可以在WF中创建自定义代码活动,基本上可以实现这一点,但我的计划是最终抛弃WF,转而采用无状态模式;因此,我现在不想花时间学习如何编写自定义活动

我唯一能想到的是创建一个包含所有“共享”行为的新WF项目,然后从需要它们的工作流中启动它们。我现在正在做这件事,看看进展如何,但有人能告诉我这是不是一个坏主意吗


编辑——我现在看到的一个“问题”是,我在WF运行时使用单例,因为我以前经历过大量内存泄漏,即使我正确地处理了WF RT。我跟踪工作流初始调用方中的所有WF实例,因此为了正确处理事件,我必须将此WF实例列表传递到工作流中,以便它可以添加我在内部启动的WF。对我来说似乎有点混乱,尽管我仍然可以这样尝试。我跟踪WF实例,因为我试图使用它来启用暂停/中止/恢复功能。当用户在GUI中单击相应的按钮时,它会在所有WF实例上循环并调用匹配方法。

将工作流拆分为单独的部分的主要问题是它们完全断开连接。这就是主工作流不会等待子工作流完成。这是可以做到的,但需要一些努力

要记住的另一个想法是错误处理。当子工作流出现故障时,主工作流不知道这一点,这与添加子活动的行为截然不同


如果需要重用逻辑,还可以使用设计器创建复合活动。这与开发工作流非常相似,您可以根据需要在多个工作流上重用这些活动。

将工作流拆分为单独部分的主要问题是它们完全断开连接。这就是主工作流不会等待子工作流完成。这是可以做到的,但需要一些努力

要记住的另一个想法是错误处理。当子工作流出现故障时,主工作流不知道这一点,这与添加子活动的行为截然不同


如果需要重用逻辑,还可以使用设计器创建复合活动。这与开发工作流非常相似,您可以根据需要在多个工作流上重复使用这些活动。

谢谢,Maurice,我将研究您的建议。然而,为了扮演魔鬼代言人的角色,为什么主工作流不等待子工作流完成呢?我在主WF中有一个启动子工作流实例的代码活动,但我正在使用AutoResetEvent生成代码活动块。只有在子工作流完成(并在WorkflowCompleted处理程序中设置事件)之前,主工作流才会继续。我目前对错误处理感到困惑——我应该使用try/catch还是FaultHandlers?我想我需要重新阅读这篇文章:Maurice,在成功实现了工作流中的工作流方法之后,我尝试了你的建议。我非常兴奋地看到,创建一个自定义活动是多么容易和合乎逻辑,您可以直接将其放入其他工作流中。现在我唯一的问题是,将传入工作流的参数传递到自定义活动的机制是什么?由于活动位于工作流内部,我希望它能够以某种方式访问工作流参数,但尚未找到答案。编辑好了,我到处看看,刚刚在设计器的属性窗口中看到了它们!再次抱歉,我太激动了。属性对话框似乎不允许我选择甚至输入变量名。有些甚至是灰色的…我发现这篇文章建议工作流中的依赖属性是一种方法——您可以将自定义活动中的值绑定到DPs。谢谢,莫里斯,我会考虑你的建议。然而,为了扮演魔鬼代言人的角色,为什么主工作流不等待子工作流完成呢?我在主WF中有一个启动子工作流实例的代码活动,但我正在使用AutoResetEvent生成代码活动块。只有在子工作流完成(并在WorkflowCompleted处理程序中设置事件)之前,主工作流才会继续。我目前对错误处理感到困惑——我应该使用try/catch还是FaultHandlers?我想我需要重新阅读这篇文章:Maurice,在成功实现了工作流中的工作流方法之后,我尝试了你的建议。我非常兴奋地看到,创建一个自定义活动是多么容易和合乎逻辑,您可以直接将其放入其他工作流中。现在我唯一的问题是,将传入工作流的参数传递到自定义活动的机制是什么?由于活动位于工作流内部,我希望它能够以某种方式访问工作流参数,但尚未找到答案。编辑好了,我到处看看,刚刚在设计器的属性窗口中看到了它们!再次抱歉,我太激动了。属性对话框似乎不允许我选择甚至输入变量名。有些甚至是灰色的…我发现这篇文章建议工作流中的依赖属性是一种方法——您可以将自定义活动中的值绑定到DPs。