首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现异步工作流?

如何实现异步工作流?
EN

Stack Overflow用户
提问于 2011-04-08 21:32:59
回答 2查看 906关注 0票数 0
代码语言:javascript
复制
        WorkflowInvoker invoker = new WorkflowInvoker(new Workflow1());

        for (int i = 0; i < 10; i++)
        {
            //invoker.InvokeAsync(myOrders);
            IAsyncResult result = invoker.BeginInvoke(myOrders,new AsyncCallback(WorkflowCompletedCallback),order);
        }

我使用上面的代码来实现异步工作流。我希望这个工作流运行10次,并且我有一些类似于线程池的东西,这样10个工作流线程可以同时运行。第二个不需要等待第一个完成它的工作。我的工作流程非常简单,它会做一些计算,并在屏幕上打印几个句子。运行上面的代码后,我发现这10个工作流似乎是一个接一个地调用,而不是像我希望的那样同时运行。异步工作流的正确方法是什么?谢谢!

更新:在收到别人的一些反馈后,我也尝试使用workflowapplication来异步完成这项工作:

代码语言:javascript
复制
        WorkflowApplication wfApp = new WorkflowApplication(new Workflow1(), myOrders);
        for (int i = 0; i < 10; i++)
        {
            wfApp.Run();
        }

        /* Read the end time. */
        DateTime stopTime = DateTime.Now;
        Console.WriteLine(stopTime);
        // Duration
        TimeSpan duration = stopTime - startTime;
        Console.WriteLine("hours:" + duration.TotalHours);
        Console.WriteLine("minutes:" + duration.TotalMinutes);
        Console.WriteLine("seconds:" + duration.TotalSeconds);
        Console.WriteLine("milliseconds:" + duration.TotalMilliseconds);

运行结果如下:2011年4月08日9:57:49 AM 2011.04:8 9:57:50AM小时:6.277777777778E-05分钟:0.00376666666666667秒:0.226毫秒:226流程订单客户: 10 |发货:下图|总价:250|发货价格:10 ProductID:1 |数量:5|价格: 50 ProductID:2 |数量:10|价格: 200

它看起来是异步的,但实际上只有一个线程在运行我的工作流(不是主应用程序线程)。但是从输出中我只看到一个线程在运行我的工作流。如何让10个线程同时运行工作流?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-08 21:50:13

如果您正在检查循环中的IAsyncResult,那么它将被阻塞,直到异步方法完成。提供IAsyncResult是为了让您可以同步使用异步方法,这并不是您在这里要做的事情。

票数 0
EN

Stack Overflow用户

发布于 2011-04-08 22:24:07

你的第二个例子是错误的,因为WorkflowApplication.Run是阻塞的。

至于您的第一个示例,请参阅本文:http://www.codeproject.com/KB/WF/OperationWorkflowInvoker4.aspx

特别是:http://www.codeproject.com/KB/WF/OperationWorkflowInvoker4/Operat1.jpg

WorkflowInvoker似乎使用了一种调度策略,这种策略很可能是单线程的。研究一下这一点,或者自己做线程调度

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5595816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档