2

是否可以像在 Crm 4 中那样进行异步调用

  crmService.UpdateAsync(card, Guid.NewGuid());

在 CRM 2011 中???

我必须在 SSIS 的帮助下在 CRM 和某些系统之间进行同步。在目标脚本组件中,我想使用异步调用,但我不想自己编写异步调用。

谢谢!!!

4

2 回答 2

0

我主要使用 CRM 2011(而不是 CRM 4),但听起来您将要部署一个插件。如果没有,请立即停止阅读。:)

如果是,您可以在 PRT 中注册插件时将调用类型设置为异步。只需单击该选项。

你还有另一个选择。如果您正在运行最新的 .NET 框架,则有一个新关键字 - async 异步执行该方法。如果您的目标是较旧的 .NET 版本,请不要绝望 - 我使用线程进行了长时间的更新,而且效果也很好。

于 2013-01-25T16:35:00.880 回答
0

可能是这个问题的答案,但只有在 CRM 2011 UR 12 中才有可能

 #region Execute Multiple with Results
// Create an ExecuteMultipleRequest object.
requestWithResults = new ExecuteMultipleRequest()
{
    // Assign settings that define execution behavior: continue on error, return responses. 
    Settings = new ExecuteMultipleSettings()
    {
        ContinueOnError = false,
        ReturnResponses = true
    },
    // Create an empty organization request collection.
    Requests = new OrganizationRequestCollection()
};

// Create several (local, in memory) entities in a collection. 
EntityCollection input = GetCollectionOfEntitiesToCreate();

// Add a CreateRequest for each entity to the request collection.
foreach (var entity in input.Entities)
{
    CreateRequest createRequest = new CreateRequest { Target = entity };
    requestWithResults.Requests.Add(createRequest);
}

// Execute all the requests in the request collection using a single web method call.
ExecuteMultipleResponse responseWithResults =
    (ExecuteMultipleResponse)_serviceProxy.Execute(requestWithResults);

// Display the results returned in the responses.
foreach (var responseItem in responseWithResults.Responses)
{
    // A valid response.
    if (responseItem.Response != null)
        DisplayResponse(requestWithResults.Requests[responseItem.RequestIndex], responseItem.Response);

    // An error has occurred.
    else if (responseItem.Fault != null)
        DisplayFault(requestWithResults.Requests[responseItem.RequestIndex], 
            responseItem.RequestIndex, responseItem.Fault);
}

来自 MSDN 的代码

于 2013-03-07T09:14:24.267 回答