public WorkItemPool(IWorkItemProcessor <T> processor) { Processor = processor; monitoredProcessor = new MonitorableProcessor <T>(Processor); completionMonitor = new CountBasedCompeletionMonitor(this); processor.NewWorkItem += new EventHandler <NewWorkItemEventArgs <T> >(processor_NewWorkItem); processor.Complete += new EventHandler <WorkItemResultEventArgs <T> >(processor_Complete); monitoredProcessor.NewWorkItem += new EventHandler <NewWorkItemEventArgs <T> >(tpWorkItem_NewWorkItem); }
private void tpWorkItem_NewWorkItem(object sender, NewWorkItemEventArgs <T> e) { MonitorableProcessor <T> workItem = (MonitorableProcessor <T>)sender; ThreadPool.QueueUserWorkItem(workItem.WaitCallback, e.WorkItem); }