コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }