Example #1
0
        static async Task <double> ProcessData(CDSWebApiService svc, List <JObject> accountsToImport,
                                               ExecutionDataflowBlockOptions executionDataflowBlockOptions)
        {
            var createAccounts = new TransformBlock <JObject, Uri>(
                async a =>
            {
                return(await svc.PostCreateAsync("accounts", a));
            },
                executionDataflowBlockOptions
                );

            var deleteAccounts = new ActionBlock <Uri>(
                async u =>
            {
                await svc.DeleteAsync(u);
            },
                executionDataflowBlockOptions
                );

            createAccounts.LinkTo(deleteAccounts, new DataflowLinkOptions {
                PropagateCompletion = true
            });

            var start = DateTime.Now;

            accountsToImport.ForEach(a => createAccounts.SendAsync(a));
            createAccounts.Complete();
            await deleteAccounts.Completion;

            //Calculate the duration to complete
            return((DateTime.Now - start).TotalSeconds);
        }