C# 工作流基础:如何实现排队?

C# 工作流基础:如何实现排队?,c#,asp.net,workflow-foundation-4,C#,Asp.net,Workflow Foundation 4,我已经在我的web应用程序中实现了WF,它是异步工作的。下面是一个例子 public Guid Something(string somVar) { WorkflowApplication i = new WorkflowApplication(SomeWF.Some(somVar)); SetupWorkflowCallbacks(ref i); i.Run(); return i.

我已经在我的web应用程序中实现了WF,它是异步工作的。下面是一个例子

    public Guid Something(string somVar)
    {
            WorkflowApplication i = new WorkflowApplication(SomeWF.Some(somVar));
            SetupWorkflowCallbacks(ref i);
            i.Run();
            return i.Id;

    }
现在,当我需要调用一个只能接收一个用户请求的外部api时,问题就开始了。例如,10个网页用户可以运行此WF,一切都会正常。但当一个用户在短时间内运行WF 2次时,我收到了来自api的错误。
我需要某种排队来避免这种类型的错误

如果内存可用,您可以使用相关令牌来实现这一点。看看这是否有帮助?可以用ManualResetEvent做些什么吗。我会把;什么时候调用web服务,我可以调用.Set(),但这并不安全。不能保证工作流在同一个过程中启动和完成,特别是如果托管在AppFabric中。我采取了另一种方法。我已经准备好将WF持久化到DB中。所以我所做的就是启动WF并将其放入睡眠。在MSMQ的帮助下,我将他的进程ID发送给queu。