我有一个异步方法来搜索数据并更新我的列表视图,该异步方法进行HTTP发布并接收JSON数据,在同一类中我可以随时调用该方法,但是我尝试从另一个类调用该方法,并且收到错误:
Exceçãogerada:“ System.InvalidOperationException” em System.Net.Http.dll
这是我的异步方法:
public async System.Threading.Tasks.Task ChecarPedidosAsync()
{
using (var client = new HttpClient())
{
BindingSource bsDados = new BindingSource();
String URI = url_app + "/merchantapp/api/" +
"GetTodaysOrder?" +
"token=" + token +
"&user_type=admin" +
"&mtid=" + restaurant_id +
"&lang=br" +
"&api_key=" + api +
"&app_version=2.5" +
"&merchant_device_id=device_555" +
"&device_platform=Android";
HttpResponseMessage response = await client.GetAsync(URI);
if (response.IsSuccessStatusCode)
{
//Limpo o listbox
listPedidos.Items.Clear();
var ProdutoJsonString = await response.Content.ReadAsStringAsync();
ProdutoJsonString = ProdutoJsonString.Replace("(", "").Replace(")", "");
dynamic dados_msg = JObject.Parse(ProdutoJsonString);
//dados_msg = dados_msg.details.data;
try
{
//Verifico se o servidor irá retornar os dados
Console.WriteLine(dados_msg);
//verifico a quantidade de pedidos
int qtd_pedidos = dados_msg.details.total_order;
//Altero a mensagem recebido, filtrando os pedidos
dados_msg = dados_msg.details.data;
Console.Write(dados_msg);
//Faço o loop nos pedidos
for (int i = 0; i <= qtd_pedidos - 1; i++) {
N_Pedido = dados_msg[i].order_id;
Cliente = dados_msg[i].customer_name;
Hora = dados_msg[i].transaction_time;
Valor = dados_msg[i].total_w_tax_prety;
Situacao = dados_msg[i].status_raw;
//Acerto de status pending (Gerado no mobile)
if (Situacao.Equals("pending") || Situacao.Equals("Pending") || Situacao.Equals("pendente"))
{
Situacao = "Pendente";
}
else if (Situacao.Equals("accepted") || Situacao.Equals("Accepted")) {
Situacao = "Aceito";
}
else if (Situacao.Equals("decline") || Situacao.Equals("Decline"))
{
Situacao = "Rejeitado";
}
//listPedidos.DrawMode = DrawMode.OwnerDrawFixed;
//listPedidos.DrawItem += new DrawItemEventHandler(listPedidos_DrawItem);
listPedidos.Items.Add("#" + N_Pedido + "-" + Cliente + "-" + Hora + "-\n" + Valor + "-" + Situacao);
/*MessageBox.Show("N_Pedido: " + N_Pedido+
"\nCliente: "+Cliente+
"\nHora: "+Hora+
"\nValor: "+Valor+
"\nSituacao: "+Situacao);*/
}
}
catch (Exception es)
{
}
}
else
{
}
}
}
这是我从另一个类中调用异步方法的代码:
//Atualizo o PDV
frmPDV novo = new frmPDV();
novo.ChecarPedidosAsync();
答案 0 :(得分:0)
当我打开异步方法时,我的_load事件表单加载了“ URL,令牌等”设置,当我尝试调用另一个类的异步方法时,这些字符串为空,因此我更改了方法并将其设置为像字符串,效果很好。
frmPDV novo = new frmPDV();
novo.ChecarPedidosAsync(url, token, api);