【发布时间】:2014-02-17 00:27:46
【问题描述】:
基本上,当我的自动完成文本框更改文本时,它会从WCF 服务更新(附照片),问题是:
Task taskA = new Task(() => listanomes.queryAsync(argumentos, 2, 3, query));
任务没有一开始就开始,所以我需要的列表是空的。
private async void tbA_destinatario_TextChanged(object sender, RoutedEventArgs e)
{
await buscaAC();
await fotos();
int i = 0;
foreach (Pessoa temp in listaPessoas)
{
if (listaimgs.Count == 0)
break;
temp.Imagem = listaimgs[i];
i++;
listaPessoas[i] = temp;
}
tbA_destinatario.ItemsSource = listaPessoas;
}
private async Task buscaAC()
{
ServicosLinkedIN.ServicosClient listanomes = new ServicosLinkedIN.ServicosClient();
string query = "select nome,id_user, foto from tbl_conexoes, tbl_users where((tbl_conexoes.id_con2 = @var1 AND id_con1 = id_user) OR (tbl_conexoes.id_con1 = @var1 AND id_con2 = id_user)) AND upper(nome) LIKE upper(@var2) ORDER BY nome LIMIT 0, 5";
List<string> argumentos = new List<string>();
argumentos.Add(Convert.ToString(id));
argumentos.Add("%" + tbA_destinatario.Text + "%");
//listanomes.listautilizadoresAsync(id, tbA_destinatario.Text);
listanomes.queryCompleted += listanomesautocomplete;
Task taskA = new Task(() => listanomes.queryAsync(argumentos, 2, 3, query));
taskA.Start();
await taskA;
}
private async Task fotos()
{
ServicosLinkedIN.ServicosClient dlfotos = new ServicosLinkedIN.ServicosClient();
dlfotos.listadlFotoCompleted += dlfotos_listadlFotoCompleted;
Task taskA = new Task(() => dlfotos.listadlFotoAsync(nomeimgs));
taskA.Start();
await taskA;
}
【问题讨论】:
-
使用
async-await仅使用Task.Run来启动任务。在 C# 中,方法始终是 CamelCased,异步方法应以 Async 为后缀。为什么不对 WCF 使用异步代理?
标签: c# wcf asynchronous task async-await