Here are the examples of the csharp api class System.Collections.Concurrent.ConcurrentBag.Add(Rosalia.Core.Tasks.IdentityWithResult) taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
1 Example
0
1. Example
Project: Rosalia
Source File: ParallelExecutionStrategy.cs
Source File: ParallelExecutionStrategy.cs
public ITaskResult<IdentityWithResult[]> Execute(Layer layer, Func<Identity, TaskContext> contextFactory, ITaskInterceptor interceptor) { ITaskResult<IdentityWithResult[]> failure = null; var results = new ConcurrentBag<IdentityWithResult>(); var layerTasks = layer.Items.Select(item => SystemTask.Factory.StartNew(() => { Identity id = item.Id; TaskContext taskContext = contextFactory(id); if (interceptor != null) { interceptor.BeforeTaskExecute(id, item.Task, taskContext); } ITaskResult<object> result = item.Task.Execute(taskContext); if (interceptor != null) { interceptor.AfterTaskExecute(id, item.Task, taskContext, result); } if (result.IsSuccess) { results.Add(new IdentityWithResult(id, result.Data)); } else { failure = new FailureResult<IdentityWithResult[]>(result.Error); } })).ToArray(); SystemTask.WaitAll(layerTasks); if (failure != null) { return failure; } return new SuccessResult<IdentityWithResult[]>(results.ToArray()); }