Boa tarde,
Eu tenho um WCF com vários métodos que eu consumo em uma aplicação Silverlight MVVM.
Eu tenho duas VM Class, a VMHeader e a VMItens, quando minha view inicia eu mando as VMs carregarem.
Cada VM chama um método do WCF (LoadHeaderAsync e LoadItensAsync) e no evento Complete destes métodos eu alimento as properties da VM, fazendo o bind do Silverlight...
Para complicar um pouco mais, eu tenho um Timer que chama outro método (GetMessagesAsync) do mesmo WCF mas em outra classe e outra
Thread e tem seu Complete também.
Após ter varios problemas de performace, eu percebi que os retornos não são assíncronos, quando é chamado os 3 métodos, o WCF só executa o segundo quando o primeiro retorna e assim por diante.
O que acontece é que o método das mensagens demora quase um minuto para executar, ele não é essencial para a aplicação, só exibe um alerta caso ele ache alguma coisa.
Com isso a view demora muito para carregar, atualiza ou navegar para outra view enquanto a busca por mensagens esta ocorrendo.
Fiz um teste com 3 métodos com sleeps de 5, 10 e 30. Ao executar eles, a ordem de retorno não é obedecida se ele retornar 30, 5 e 10, o primeiro retorna em 30 segundos, o segundo em 35 e o ultimo em 45... o que prova que ele só executa um por vez, e
não retorna em 5, 10 e 30 independente da ordem chamada.
Ja li muita coisa sobre ServiceBehavior e CallbackBehavior mas não funcionou.
Gostaria de saber se alguém ja passou por algo parecido.
Att
Tiago
Att, Tiago