Usuário com melhor resposta
Thread na consulta de um Json

Pergunta
-
Bom dia senhores,
Preciso consultar alguns retornos em Json, mas estou com um problema de perfomance, para cada url tenho uma espera que gira em torno de 20 segundos, o que pra mim é muito. Pensei em usar algum tipo de paralelismo (talvez o system.Threading / Threading.Task). Alguém pode me da ruma luz de como usar esse recurso no trecho abaixo?
WebRequest request = WebRequest.Create(new Uri(url));
request.ContentType = "application/json; charset=utf-8";
request.Method = WebRequestMethods.Http.Get;//AQUI ESTÁ O PONTO DA "DEMORA", QUANDO SE FAZ A CONSULTA NO RETORNO JSON
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
retorno = reader.ReadToEnd();
new RetornoJson(retorno);
Console.WriteLine(retorno);Obrigada =)
Respostas
-
Bom dia Renato,
Li seu artigo e achei muito bom ;) mas não consegui aplicar no meu console. Na verdade, apesar de ter lido muitas coisas, não entendi como aplicar o paralelismo (Task) para a leitura do meu json (WebResponse response = request.GetResponse();)
Desde já, obrigada.
Resolvi o problema com usando esse método:
public async Task<string> ConsultaApiAsync(String url)
{
var uri1 = new Uri(url);
using (var httpClient = new HttpClient())
{
var response = await httpClient.GetAsync(uri1);
return (await response.Content.ReadAsStringAsync());
}
}Vlw ;)
- Editado Helena Mam terça-feira, 12 de maio de 2015 19:01
- Marcado como Resposta Helena Mam terça-feira, 12 de maio de 2015 19:01
Todas as Respostas
-
Helena,
Escrevi tempos atrás uma artigo sobre processamento paralelo e assíncrono no .NET Framework. Acredito que o mesmo possa ser útil para o que vc precisa:
- Sugerido como Resposta Rogério dos Santos Fernandes segunda-feira, 11 de maio de 2015 14:11
-
Bom dia Renato,
Li seu artigo e achei muito bom ;) mas não consegui aplicar no meu console. Na verdade, apesar de ter lido muitas coisas, não entendi como aplicar o paralelismo (Task) para a leitura do meu json (WebResponse response = request.GetResponse();)
Desde já, obrigada.
Resolvi o problema com usando esse método:
public async Task<string> ConsultaApiAsync(String url)
{
var uri1 = new Uri(url);
using (var httpClient = new HttpClient())
{
var response = await httpClient.GetAsync(uri1);
return (await response.Content.ReadAsStringAsync());
}
}Vlw ;)
- Editado Helena Mam terça-feira, 12 de maio de 2015 19:01
- Marcado como Resposta Helena Mam terça-feira, 12 de maio de 2015 19:01
-
Bom dia senhores,
Preciso consultar alguns retornos em Json, mas estou com um problema de perfomance, para cada url tenho uma espera que gira em torno de 20 segundos, o que pra mim é muito. Pensei em usar algum tipo de paralelismo (talvez o system.Threading / Threading.Task). Alguém pode me da ruma luz de como usar esse recurso no trecho abaixo?
WebRequest request = WebRequest.Create(new Uri(url));
request.ContentType = "application/json; charset=utf-8";
request.Method = WebRequestMethods.Http.Get;//AQUI ESTÁ O PONTO DA "DEMORA", QUANDO SE FAZ A CONSULTA NO RETORNO JSON
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
retorno = reader.ReadToEnd();
new RetornoJson(retorno);
Console.WriteLine(retorno);Obrigada =)
-
Bom dia Renato,
Li seu artigo e achei muito bom ;) mas não consegui aplicar no meu console. Na verdade, apesar de ter lido muitas coisas, não entendi como aplicar o paralelismo (Task) para a leitura do meu json (WebResponse response = request.GetResponse();)
Desde já, obrigada.
Resolvi o problema com usando esse método:
public async Task<string> ConsultaApiAsync(String url)
{
var uri1 = new Uri(url);
using (var httpClient = new HttpClient())
{
var response = await httpClient.GetAsync(uri1);
return (await response.Content.ReadAsStringAsync());
}
}Vlw ;)