Tuesday, March 19, 2013

C#: Using Tasks API for multi tasking


var threads = 100;
                var bag = new ConcurrentBag();
                var act = new List();
                var eachTaskChunkSize = (int)Math.Ceiling((float) nplIds.Keys.Count/(float) threads);
                var subChunks = nplIds.Keys.SplitInChunks(eachTaskChunkSize).ToArray();
                for (int i = 0; i < threads; i++)
                {
                    var taskId = i;
                    var task = new Task(() =>
                                            {
                                                    GetProductDetails( subChunks[taskId] ).ForEach(bag.Add);
                                            });
                    task.Start();
                    act.Add(task);
                }

                Task.WaitAll(act.ToArray());

No comments:

Post a Comment