如何在 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);
下面是我的 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);