none
Atualizando Standard Live Tile com Background Agents RRS feed

  • Pergunta

  • Oi pessoal,

    Estou tentando atualizar o Tile principal da aplicação com um Task Agent. Esta atualização tem que ser feita após uma consulta no banco de dados na Isolated Storage, mas não consigo acessar o banco com uma consulta padrão pelo Linq. Provavelmente porque ScheduledTaskAgent seja um projeto independente dentro da solução, conforme segui o tutorial no MSDN.

    A pergunta é: Tenho como fazer uma consulta ao meu banco de dados local de dentro do projeto ScheduledTaskAgent (que é um namespace diferente da APP, mas está dentro da mesma solução) ?

    Não posso referenciar meu projeto principal porque causaria um erro de dependência circular.

    Grato.


    Andrey Kurka


    sexta-feira, 20 de julho de 2012 23:29

Respostas

  • opa, boa, agora ficou mais claro!!! Desculpe ter comentado do isolated! Vamos lá novamente :)

    nesse caso, o que irá querer fazer é sempre gerar suas classes em um class library, que possa acessar via foreground app e também uma background app. além de ser uma pratica mais aconselhável, irá te permitir acessar tanto do bg agente, quanto tentar reusar no futuro em um aplicativo Windows 8, Windows phone, etc...

    lembre sempre que, assim como no caso do isolated, qualquer classe que seja acessível pelo agente + aplicativo é importante que use a classe Mutex. Isso irá te proteger no caso de duas thread fazerem acesso ao mesmo recurso, ao mesmo tempo

    Rodolpho Marques do Carmo Microsoft MVP - Windows Phone Development @rodocarmo http://www.conexaowindows.com http://www.rodolphomarques.com http://www.windowsphonebrasil.net

    quinta-feira, 23 de agosto de 2012 16:37
    Moderador

Todas as Respostas

  • Andrey, você pode sim, pois apesar do Agent estar em um projeto separado, como mencionou, só podemos ter um por aplicativo e ele é invocado da aplicação principal, ou seja, sempre está embutido nesse contexto.

    dessa forma, por exemplo, você pode usar algo como isso  dentro do seu método. da mesma forma irá poder acessar os settings, mas nesse caso não muito recomendável.

            protected override void OnInvoke(ScheduledTask task)
            {
             

                IsolatedStorageFile tvStorage = IsolatedStorageFile.GetUserStoreForApplication();
               

                using (var isoFileStream = new IsolatedStorageFileStream("arquivo.txt", FileMode.Open, tvStorage))
                {
                    if (isoFileStream != null)
                    {
                        using (var isoFileReader = new StreamReader(isoFileStream))
                        {
                            .... isoFileReader.ReadLine() ... e segue sua leitura do arquivo
                        }
                    }
                }


    Rodolpho Marques do Carmo Microsoft MVP - Windows Phone Development @rodocarmo http://www.conexaowindows.com http://www.rodolphomarques.com http://www.windowsphonebrasil.net

    quinta-feira, 23 de agosto de 2012 12:54
    Moderador
  • Rodo, blz?

    Realmente acessar a IsolatedStorage não tem problemas. Problema mesmo tem sido acessar a classe gerada pelo SQL Metal, conforme a imagem abaixo. Acreditei que por estarem dentro da mesma solução fosse suficiente, mas não consigo.

    Alguma sugestão?


    Andrey Kurka

    quinta-feira, 23 de agosto de 2012 16:08
  • opa, boa, agora ficou mais claro!!! Desculpe ter comentado do isolated! Vamos lá novamente :)

    nesse caso, o que irá querer fazer é sempre gerar suas classes em um class library, que possa acessar via foreground app e também uma background app. além de ser uma pratica mais aconselhável, irá te permitir acessar tanto do bg agente, quanto tentar reusar no futuro em um aplicativo Windows 8, Windows phone, etc...

    lembre sempre que, assim como no caso do isolated, qualquer classe que seja acessível pelo agente + aplicativo é importante que use a classe Mutex. Isso irá te proteger no caso de duas thread fazerem acesso ao mesmo recurso, ao mesmo tempo

    Rodolpho Marques do Carmo Microsoft MVP - Windows Phone Development @rodocarmo http://www.conexaowindows.com http://www.rodolphomarques.com http://www.windowsphonebrasil.net

    quinta-feira, 23 de agosto de 2012 16:37
    Moderador
  • opa, boa, agora ficou mais claro!!! Desculpe ter comentado do isolated! Vamos lá novamente :)

    nesse caso, o que irá querer fazer é sempre gerar suas classes em um class library, que possa acessar via foreground app e também uma background app. além de ser uma pratica mais aconselhável, irá te permitir acessar tanto do bg agente, quanto tentar reusar no futuro em um aplicativo Windows 8, Windows phone, etc...

    lembre sempre que, assim como no caso do isolated, qualquer classe que seja acessível pelo agente + aplicativo é importante que use a classe Mutex. Isso irá te proteger no caso de duas thread fazerem acesso ao mesmo recurso, ao mesmo tempo

    Rodolpho Marques do Carmo Microsoft MVP - Windows Phone Development @rodocarmo http://www.conexaowindows.com http://www.rodolphomarques.com http://www.windowsphonebrasil.net

    Funcionou muito obrigado!
    sexta-feira, 14 de dezembro de 2012 11:20