Voce pode dispara as duas consultas, cada uma em uma Thread separada.
Trabalhei pouco com WCF, mas com proxy de WebService todos os metodos tinha a opção de execução assincronona, por exemplo os metodos no meu webservice chamados F1 e F2 poderiam ser executados atraves dos metodos F1Async e F2Async.
Mas focando ao uso de Threads:
Crie uma classe para execução assincrona do seu servico:
public delegate void ServiceResultEventHandler(object response);
public class ServiceAsync {
public class F1Args {
public int A { get; set; }
public int B { get; set; }
}
public class F2Args {
public int A { get; set; }
public int B { get; set; }
}
private object Service;
public event ServiceResultEventHandler OnF1Response;
public event ServiceResultEventHandler OnF2Response;
public ServiceAsync(object service) {
this.Service = service;
}
private void StartF1(object args) {
var parametros = (F1Args)args;
var response = Service.F1(parametros.A, parametros.B);
if (this.OnF1Response != null) this.OnF1Response(response);
}
private void StartF2(object args) {
var parametros = (F2Args)args;
var response = Service.F2(parametros.A, parametros.B);
if (this.OnF2Response != null) this.OnF2Response(response);
}
public void F1(int a, int b) {
var args = new F1Args() { A = a, B = b };
var thread = new Thread(new ParameterizedThreadStart(this.StartF1));
thread.Start(args);
}
public void F2(int a, int b) {
var args = new F1Args() { A = a, B = b };
var thread = new Thread(new ParameterizedThreadStart(this.StartF2));
thread.Start(args);
}
}
Ah... o objeto Service deve ser do tipo do seu WCF Service ok ?
Para executar os metodos ficaria assim:
public void Executar() {
ServiceAsync wcf = new ServiceAsync("Instancia do teu Service");
wcf.OnF1Response += new ServiceResultEventHandler(wcf_OnF1Response);
wcf.OnF2Response += new ServiceResultEventHandler(wcf_OnF2Response);
wcf.F1(0, 0);
wcf.F2(1, 1);
}
void wcf_OnF2Response(object response) {
// pega a resposta no objeto response
}
void wcf_OnF1Response(object response) {
// pega a resposta no objeto response
}
Se não funciona de um jeito, tente de outro totalmente diferente ^_^