public DistributedResource ExecuteTask(int taskId, DistributedResource resource) { if (Disposed) { throw new ObjectDisposedException(this.ToString()); } else { try { Logging.WriteLog("Request for executing task was received"); TaskLibrary task = TaskManager.Tasks[taskId]; var stream = new MemoryStream(resource.Get()); var serializer = new DataContractSerializer(task.InputData); object input = null; input = serializer.ReadObject(stream); var process = Activator.CreateInstance(task.Process); MethodInfo method = task.Process.GetMethod("Execute"); object executeResult = method.Invoke(process, new object[] { input }); DistributedResource result = null; lock (ResourceManager) { result = ResourceManager.CreateDistributedResource(executeResult); } return(result); } catch { return(null); } } }
public DividedResource CreateDividedResource(T resource) { if (!Disposed) { List <T> list = ObjectDivider.Divide(resource); List <DistributedResource> result = new List <DistributedResource>(); foreach (T item in list) { result.Add(ResourceManager.CreateDistributedResource(item)); } return(new DividedResource() { Resources = result }); } else { throw new ObjectDisposedException(this.ToString()); } }