Threads, Delegate ou tasks

24/08/2012

Tenho esse programa. Preciso colocar o método execute em uma Thread, task ou Delegate, ou seja,
esse método rodará em um serviço e será startado automaticamente em um servidor e terei muitas execuções
oncorrentes, logo isso deveria ser feito em um desses caras acima. Abaixo todo meu código até agora.


PesquisaAgenda pag = new PesquisaAgenda();

public Form1()
{
InitializeComponent();
}

Lista<Entity.Rotina> listaRotina = new Lista<Entity.Rotina>();
Lista<Entity.Tarefa> listaTarefa = new Lista<Entity.Tarefa>();
Lista<Entity.ExportacaoAgendamento> listaAgendamento = new Lista<Entity.ExportacaoAgendamento>();
Lista<Entity.ExportacaoAgendamento> listaTudo = new Lista<Entity.ExportacaoAgendamento>();

List<Int64> tarefa;

Int64 _execTarefa;
DateTime _diaHoraExcecucao = DateTime.Now;

t.Timer timer = new t.Timer();

private static int CompararTarefas(Entity.Tarefa tarefaDe, Entity.Tarefa tarefaPara)
{
return tarefaDe.OrdemExecucao.CompareTo(tarefaPara.OrdemExecucao);
}

private void BuscaTarefa()
{
if (listaTudo.Count == 0)
{
listaTudo = Sistema.Infrastructure.Repository.ExportacaoAgendamento.RetornarTodos();
}

listaRotina = Sistema.Infrastructure.Repository.Rotina.RetornarTodos();

dgvAgenda.DataSource = listaTudo.ToArray();
dgvRotina.DataSource = listaRotina.ToArray();

foreach (var item in listaRotina)
{
if (item.DataInicial < DateTime.Now)
{
listaRotina = Sistema.Infrastructure.Repository.Rotina.RetornarPorFiltro(new Finder.Rotina() { IdRotina = item.IdRotina });
foreach (var item_rotina in listaRotina)
{
execute(item_rotina.IdRotina);
}
}
}
}

private void execute(Int64 _rotina)
{
var lista = Sistema.Infrastructure.Repository.Tarefa.RetornarPorFiltro(new Finder.Tarefa() { IdRotina = _rotina }).ToList();
lista.Sort(CompararTarefas);

foreach (var item in lista)
{
string path = "";
path = item.Descricao;
System.Diagnostics.Process.Start(path);
}
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
BuscaTarefa();
}

Pjava