Sample: Task Parallel Library with CrmServiceClient
This C# .NET sample shows how to use the CrmServiceClient class with the Task Parallel Library (TPL).
The Task Parallel Library enables developers to be more productive by simplifying the process of adding parallelism and concurrency to applications. Adding parallelism and concurrency can significantly improve the total throughput for applications that need to perform a large number of Dataverse operations in a short period of time.
- Visual Studio 2019 or later
- Dataverse test environment and valid user logon credentials
How to run the sample
- Clone the PowerApps-Samples repository so that you have a copy locally.
- Open the
dataverse\Xrm Tooling\TPLCrmServiceClient\TPLCrmServiceClient.slnfile in Visual Studio.
- Press F5 to compile and run the program.
Because the CrmServiceClient class includes handling for the transient errors thrown by the Dataverse service protection limits, the combination of TPL and
CrmServiceClient is valuable to create applications that can optimize throughput while being resilient to the service protection limit errors by re-trying requests that are rejected due to these limits. The CrmServiceClient.Clone() method enables TPL to use the client with multiple threads.
More information: Service Protection API Limits
This sample will generate a number of account table rows using the Parallel.ForEach method, then it will use that technique again to delete the tables created. By default, this sample will create only 10 rows, which is not enough to hit the service protection API limit errors. If you raise the
numberOfRecords variable value to 10000, you can use Fiddler to observe how some of the requests will be rejected and re-tried.