public void SetPlan(ResourcePlan plan) { FreeResources(); ResourcePlan = plan; AllocateResources(); }
public void FreeResources() { if (ResourcePlan == null || !initialized) { return; } foreach (var resource in resources) { resource.Value.Dispose(); AccessMonitor.ResourceDisposedEvent(ResourcePlan[resource.Key]); } resources.Clear(); ResourcePlan = null; initialized = false; }
public ActionDispatcher( IResourcePlan resourcePlan , int numberOfThreadPoolThreads = 8 , TaskCreationOptions taskCreationOptions = TaskCreationOptions.None , params IActionPipe[] actionPipes) { pipes = actionPipes.ToArray(); resourceManager = new ResourceManager(resourcePlan); cancellationTokenSource = new CancellationTokenSource(); tasks = new Dictionary <IActionPipe, Task>(pipes.Length); pool = new DedicatedThreadPool(new DedicatedThreadPoolSettings(numberOfThreadPoolThreads)); Scheduler = new DedicatedThreadPoolTaskScheduler(pool); TaskFactory = new TaskFactory(cancellationTokenSource.Token, taskCreationOptions, TaskContinuationOptions.None, Scheduler); SetUpProcessingDefaultEvents(); state = DispatcherState.NotStarted; }
public ResourceManager(IResourcePlan plan, IAccessMonitor accessMonitor) { AccessMonitor = accessMonitor; resources = new Dictionary <Enum, IAccessableResource>(); ResourcePlan = plan; }
public ResourceManager(IResourcePlan plan) { AccessMonitor = new AccessMonitorSink(); resources = new Dictionary <Enum, IAccessableResource>(); ResourcePlan = plan; }