public static async Task Atualizar(object o) { semaphore.Wait(); try { var f = (Tuple <int, IEnumerable <CampanhaModel> >)o; Console.WriteLine($"Inicio Atualizando Registros Fornecedor:{f.Item1} Quantidade:{f.Item2.Count()}"); await new DALCampanha().UpdateFilaCampanha(f.Item2); ConcurrentDictionary <long, CampanhaModel> fornecedor = null; FilaFornecedor.TryRemove(f.Item1, out fornecedor); await Log.Delete(f.Item1); Console.WriteLine($"Fim Atualizando Registros Fornecedor:{f.Item1} Quantidade:{f.Item2.Count()}"); } catch (Exception err) { Console.WriteLine(err.Message); } semaphore.Release(); }
static async Task InicioFila() { Console.WriteLine($" ---------------- "); Console.WriteLine($"| Buscando Filas |"); Console.WriteLine($" ---------------- "); var camps = await new DALCampanha().CampanhasPendentes(); if (camps.Any()) { await Task.WhenAll(camps.GroupBy(a => new { a.Fornecedor.FornecedorID }, (a, b) => new { FornecedorID = a.FornecedorID, Campanhas = b }) .ToObservable() .ForEachAsync(a => { var f = new ConcurrentDictionary <long, CampanhaModel>(); if (FilaFornecedor.TryGetValue(a.FornecedorID, out f)) { a.Campanhas.ToObservable().ForEachAsync(c => { f.TryAdd(c.CampanhaID, c); }); } else { f = new ConcurrentDictionary <long, CampanhaModel>(); a.Campanhas.ToObservable().ForEachAsync(c => { f.TryAdd(c.CampanhaID, c); }); FilaFornecedor.TryAdd(a.FornecedorID, f); } })); } Wait.Set(); }