Пример #1
0
        public void Dispose()
        {
            if (DisposeExecutado)
            {
                return;
            }
            DisposeExecutado = true;

            TaferasEmExecucao?.Clear();
            Relatorio?.Clear();
            Log($"Processo concluído");
        }
Пример #2
0
        private Dn32Tarefa AdicionarTarefa(Func <object, Task> acao, string descricao, TimeSpan?timeout)
        {
            var relatorioDaTarefa = new RelatorioDeExecucao {
                Descricao = descricao
            };

            Relatorio.Add(relatorioDaTarefa);

            var tarefa = new Dn32Tarefa(acao, descricao, timeout)
            {
                TarefaIniciadaCallBack = (Dn32Tarefa tarefaLocal) =>
                {
                    relatorioDaTarefa.Inicio = DateTime.Now;
                    Log($"Tarefa iniciada: {descricao}");
                },

                TarefaFinalizadaCallBack = (Dn32Tarefa tarefaLocal) =>
                {
                    relatorioDaTarefa.Fim     = DateTime.Now;
                    relatorioDaTarefa.Sucesso = true;
                    TaferasEmExecucao.TryRemove(tarefaLocal.Id, out _);
                    Log($"Tarefa finalizada com sucesso: {descricao}");
                },

                TarefaErroCallBack = (Dn32Tarefa tarefaLocal, Exception ex) =>
                {
                    relatorioDaTarefa.Fim     = DateTime.Now;
                    relatorioDaTarefa.Sucesso = false;
                    relatorioDaTarefa.Erro    = ex.Message;
                    TaferasEmExecucao.TryRemove(tarefaLocal.Id, out _);
                    Log($"Tarefa finalizada com erro: {descricao} - {ex.Message}");
                }
            };

            TaferasEmExecucao.TryAdd(tarefa.Id, tarefa);
            return(tarefa);
        }