async void ModelosWorker(TaskQueue task) { try { HttpClient httpClient = new HttpClient(); HttpResponseMessage response = await httpClient.GetAsync(task.URL); if (response == null || !response.IsSuccessStatusCode) { Console.WriteLine(String.Format("Erro ao obter os modelos da marca {0}, Veiculo {1}, tentando novamente", task.Marca, task.Veiculo)); _queue.Enqueue(task); return; } string content = await response.Content.ReadAsStringAsync(); if (String.IsNullOrEmpty(content)) { Console.WriteLine(String.Format("Resposta invalida ao obter os modelos da marca {0}, Veiculo {1}, tentando novamente", task.Marca, task.Veiculo)); _queue.Enqueue(task); return; } List <Modelo> modelos = Modelos.FromJson(content); SQLiteCommand cmd = new SQLiteCommand("REPLACE INTO modelos (veiculo_id, id, key, name, fipe_codigo) VALUES (@veiculo_id, @id, @key, @name, @fipe_codigo)", _connection); foreach (Modelo modelo in modelos) { cmd.Parameters.Clear(); cmd.Parameters.Add("@veiculo_id", DbType.Int32).Value = task.Veiculo; cmd.Parameters.Add("@id", DbType.String).Value = modelo.Id; cmd.Parameters.Add("@key", DbType.String).Value = modelo.Key; cmd.Parameters.Add("@name", DbType.String).Value = modelo.Name; cmd.Parameters.Add("@fipe_codigo", DbType.String).Value = modelo.FipeCodigo; cmd.ExecuteNonQuery(); //countdownEvent.Reset(countdownEvent.CurrentCount + 1); _queue.Enqueue(new TaskQueue { Type = TaskQueueType.FIPE, URL = String.Format(URL_FIPE, task.Marca, task.Veiculo, modelo.Id), Marca = task.Marca, Veiculo = task.Veiculo, Modelo = modelo.Id }); Console.WriteLine(String.Format("Inserindo Modelo '{0}' do Veiculo '{1}', da marca '{2}'", modelo.Id, task.Veiculo, task.Marca)); } } catch (Exception e) { _queue.Enqueue(task); } }