public TransformBlock <List <string>, List <CustomerTextData> > LoadDataList() { var loadDataFromFileBlock = new TransformBlock <List <string>, List <CustomerTextData> >(fileItems => { var factory = new CustomerTextDataFactory(); return(new List <CustomerTextData>(fileItems.ConvertAll(factory.LoadFromFile))); }); flow.Add(loadDataFromFileBlock); return(loadDataFromFileBlock); }
static public void ProcessingByTPL_StraightForwardImplementation() { const string pathToFiles = @"..\..\..\..\DataFiles"; string[] files = Directory.GetFiles(pathToFiles, "*.txt", SearchOption.AllDirectories); var loadDataFromFileBlock = new TransformBlock<string[], List<CustomerTextData>>(fileItems => { var factory = new CustomerTextDataFactory(); return new List<CustomerTextData>(Array.ConvertAll(fileItems, factory.LoadFromFile)); }); var filterBlock = new TransformBlock<List<CustomerTextData>, List<CustomerTextData>>(textDataList => { var filter = new FilterTextData(5); return textDataList.Where(filter.Run).ToList(); }); var toListBlock = new TransformManyBlock<List<CustomerTextData>, CustomerTextData>(textDataList => { var queue = new ConcurrentQueue<CustomerTextData>(); textDataList.ForEach(queue.Enqueue); return queue; }); var action = new ActionBlock<CustomerTextData>(textData => { var weight = new WeightTextData(); int result = weight.Run(textData); Trace.WriteLine(result); Console.WriteLine(result); }); loadDataFromFileBlock.LinkTo(filterBlock); filterBlock.LinkTo(toListBlock); toListBlock.LinkTo(action); loadDataFromFileBlock.Completion.ContinueWith(t => { if (t.IsFaulted) ((IDataflowBlock)filterBlock).Fault(t.Exception); else filterBlock.Complete(); }); filterBlock.Completion.ContinueWith(t => { if (t.IsFaulted) ((IDataflowBlock)toListBlock).Fault(t.Exception); else toListBlock.Complete(); }); toListBlock.Completion.ContinueWith(t => { if (t.IsFaulted) ((IDataflowBlock)action).Fault(t.Exception); else action.Complete(); }); loadDataFromFileBlock.Post(files); loadDataFromFileBlock.Complete(); action.Completion.Wait(); }
public TransformBlock <PathToFile, BuilderCustomerData> ToCustomData() { var block = new TransformBlock <PathToFile, BuilderCustomerData>(pathToFile => { var factory = new CustomerTextDataFactory(); return(new BuilderCustomerData { PathToFile = pathToFile, CustomerData = factory.LoadFromFile(pathToFile.File) }); }); return(block); }
public FlowBuilderFactory_v3 LoadData() { var block = new TransformBlock <object, object>(pathToFileObject => { var pathToFile = (PathToFile)pathToFileObject; var factory = new CustomerTextDataFactory(); return(new BuilderCustomerData { PathToFile = pathToFile, CustomerData = factory.LoadFromFile(pathToFile.File) }); }); Flow.Add(block); return(this); }
static public void ProcessingByTPL_StraightForwardImplementation() { const string pathToFiles = @"..\..\..\..\DataFiles"; string[] files = Directory.GetFiles(pathToFiles, "*.txt", SearchOption.AllDirectories); var loadDataFromFileBlock = new TransformBlock <string[], List <CustomerTextData> >(fileItems => { var factory = new CustomerTextDataFactory(); return(new List <CustomerTextData>(Array.ConvertAll(fileItems, factory.LoadFromFile))); }); var filterBlock = new TransformBlock <List <CustomerTextData>, List <CustomerTextData> >(textDataList => { var filter = new FilterTextData(5); return(textDataList.Where(filter.Run).ToList()); }); var toListBlock = new TransformManyBlock <List <CustomerTextData>, CustomerTextData>(textDataList => { var queue = new ConcurrentQueue <CustomerTextData>(); textDataList.ForEach(queue.Enqueue); return(queue); }); var action = new ActionBlock <CustomerTextData>(textData => { var weight = new WeightTextData(); int result = weight.Run(textData); Trace.WriteLine(result); Console.WriteLine(result); }); loadDataFromFileBlock.LinkTo(filterBlock); filterBlock.LinkTo(toListBlock); toListBlock.LinkTo(action); loadDataFromFileBlock.Completion.ContinueWith(t => { if (t.IsFaulted) { ((IDataflowBlock)filterBlock).Fault(t.Exception); } else { filterBlock.Complete(); } }); filterBlock.Completion.ContinueWith(t => { if (t.IsFaulted) { ((IDataflowBlock)toListBlock).Fault(t.Exception); } else { toListBlock.Complete(); } }); toListBlock.Completion.ContinueWith(t => { if (t.IsFaulted) { ((IDataflowBlock)action).Fault(t.Exception); } else { action.Complete(); } }); loadDataFromFileBlock.Post(files); loadDataFromFileBlock.Complete(); action.Completion.Wait(); }