public WorkerCompletedData RunSync() { IActionInvoker[] arr = ExtractArrray(); var progressDatas = new WorkerProgressData[arr.Length]; var result = default(WorkerCompletedData); using (var sync = new ManualResetEventSlim(false)) { var progress = new WorkerProgressReportCallback(progressDatas, data => { result = data; sync.Set(); }); var actionInvokers = arr.Select((p, i) => new InternalWorkerProgress(p, progress, i)).ToArray(); _queueWorker.PostBulk(actionInvokers); sync.Wait(); } return(result); }
public void Run(Action <WorkerCompletedData> fn) { IActionInvoker[] arr = ExtractArrray(); var progressDatas = new WorkerProgressData[arr.Length]; var progress = new WorkerProgressReportCallback(progressDatas, fn); var actionInvokers = arr.Select((p, i) => new InternalWorkerProgress(p, progress, i)).ToArray(); _queueWorker.PostBulk(actionInvokers); }
public void Run(IActionInvoker <WorkerCompletedData> compeltedInvoker) { IActionInvoker[] arr = ExtractArrray(); var progressDatas = new WorkerProgressData[arr.Length]; var invokerSync = new InternalWorkerDataSync <WorkerCompletedData>(compeltedInvoker, _counterBlocked); var progress = new WorkerProgressReportCompleted(_queueWorker, progressDatas, invokerSync); var actionInvokers = arr.Select((p, i) => new InternalWorkerProgress(p, progress, i)).ToArray(); _queueWorker.PostBulk(actionInvokers); }