如何在 C# 中异步执行 MSCRM 工作流

How to Execute MSCRM Workflow Asynchronously in C#

下面是我的 C# 片段,它触发了 mscrm workflow

public void GenerateWorkflow(string selectedIDs, IOrganizationService service)
{
    var request = new OrganizationRequest()
    {
        RequestName = "GenerateWorkflow",
    };
    request.Parameters.Add("SelectedIDs", selectedIDs);

    var response = service.Execute(request);
    if (response.Results != null && response.Results.Count > 0)
    {
        return;
    }
}

请问如何将上面的执行运行从sync改为async,而不必等待响应再执行下一个请求?

谢谢。

到 运行 GenerateWorkflow 在单独的线程池线程上。你可以打电话给Task.Run

Queues the specified work to run on the ThreadPool and returns a task or Task<TResult> handle for that work.

Task.Run(() => GenerateWorkflow(...)); 

如果您有多个请求并发 运行,并且希望等待它们全部完成,则可以使用 Task.WhenAll.

Creates a task that will complete when all of the supplied tasks have completed.

var task1 = Task.Run(() => GenerateWorkflow1(...)); 

var task2 = Task.Run(() => SomethingElse(...)); 

...

await Task.WhenAll(task1,task2,...);

试试这个 class:“ExecuteAsyncRequest”。 将此 class 的实例传递给 Execute 方法,后者 returns ExecuteAsyncResponse 的实例。 就像 this:service.ExecuteAsyncRequest(request);