locked
SilverLight - Síncrono RRS feed

  • Pergunta

  • Senhores boa tarde!

     

    Estou desenvolvendo uma aplicação no Silverlight com WCF na arquitetura MVVM, mas estou enfrentando problemas. Estou tentando realizar uma chamada quando o usuário fechar a aplicação (Evento Application_Exit do App.xaml) para fazer um update em uma determinada tabela. Mas como a chamada é assíncrona, não consigo realizar o update, pois o aplicativo fecha antes de concluir a chamada do método.

    Alguém já passou por isso? Alguém teria uma solução simples, para tornar as chamadas síncronas no web service? Ou fazer outros caminhos alternativos? Já pesquisei em muitos sites, mas o meu problema ainda persiste, por eu ter que usar esse evento no App.xaml (A aplicação fecha antes de eu concluir o método).

     

    []'s

    Jeferson Araujo


    []'s Jeferson Araujo
    sábado, 22 de outubro de 2011 18:28

Todas as Respostas

  • Jefferson,

    Silverlight não suporta chamadas síncronas a recursos web de nenhuma forma, por questões de performance. Realmente, não há uma forma de fazer isso que você está querendo a partir do Silverlight pois assim que a thread é liberada no Application_Exit, todos os requests feitos e não concluídos são cancelados.

    Eu tive uma necessidade semelhante em um projeto que trabalhei e a resolvi usando javascript. No meu caso, a aplicação silverlight era aberta em uma nova janela, então, na página que abre essa nova janela eu tive que fazer uma função javascript com um timer que verificava se a janela do silverlight ainda está aberta. Quando esse javascript detecta que a janela já fechou, ele dispara o request via ajax e resolve o meu problema.

    Vou ver se faço um post sobre essa técnica no meu blog e espero que ela atenda a sua necessidade, mas ela só vai funcionar se o javascript não estiver rodando na janela que está sendo chamada, pois se você fechar a janela ou navegar para outra página esse javascript também vai deixar de rodar e não terá a oportunidade de executar o request desejado.


    Atenciosamente,

    Kelps Leite de Sousa | MVP Silverlight
    blog: http://kelps.net
    twitter : http://twitter.com/kelps

    Não se esqueça de "marcar como resposta" o ítem que lhe ajudou.
    • Sugerido como Resposta Edjan Santos segunda-feira, 24 de outubro de 2011 13:22
    sábado, 22 de outubro de 2011 19:26
  • Ok Kelps, estarei aguardando o post... Obrigado :)
    []'s Jeferson Araujo
    sábado, 22 de outubro de 2011 19:41
  • Jeferson,

    Silverlight não suporta chamadas síncronas de forma nativa, porém há inúmeros posts descrevendo chamadas síncronas em SL, tal como este: http://www.codeproject.com/KB/silverlight/SynchronousSilverlight.aspx

    Procure no google o termo "syncronous silverlight" e se surpreenderá com a quantidade de workarounds.

    ENTRETANTO, isso é considerado uma prática a ser evitada devido a natureza desconectada da internet (e suas aplicações como Silverlight).

    Abraço,

    Hamilton.


    HJ
    segunda-feira, 24 de outubro de 2011 13:29