public IAgentAdapter CreateAgent(AgentModel agentModel) { if (agentModel == null) { return(null); } try { Assembly assembly = Assembly.LoadFile(PATH + agentModel.Name + "\\" + agentModel.DLLFile); Type agentType = assembly.GetType(agentModel.FullClassName); IAgentAdapter agent = (IAgentAdapter)Activator.CreateInstance(agentType); return(agent); } catch (Exception e) { throw e; } }
private void StartAgent(AgentModel agentModel) { Task.Factory.StartNew(() => { IAgentAdapter agent = AgentsFactory.Instance.CreateAgent(agentModel); if (agent != null) { string lastReference = agent.Execute(agentModel.MaxRequestPerDay, agentModel.Rating, (string)agentModel.LastReference, agentModel.Name); // Terminou e actualiza dados agentModel.LastExecutionDate = DateTime.Now; agentModel.LastReference = lastReference; new AgentService().UpdateAgent(agentModel); // Notify NoticeService.Instance.Notify("Agent " + agentModel.Name + " ended!"); NoticeService.Instance.Notify("Next Parse: " + DateTime.Now.AddHours(agentModel.Periodicity).ToString()); } }); }