Atualizando Standard Live Tile com Background Agents
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.
Editado Andrey Gonçalves dos Santos sexta-feira, 20 de julho de 2012 23:30
sexta-feira, 20 de julho de 2012 23:29
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
Marcado como Resposta Andrey Gonçalves dos Santos terça-feira, 28 de agosto de 2012 22:46
quinta-feira, 23 de agosto de 2012 16:37
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.
IsolatedStorageFile tvStorage = IsolatedStorageFile.GetUserStoreForApplication();
using (var isoFileStream = new IsolatedStorageFileStream("arquivo.txt", FileMode.Open, tvStorage))
.... isoFileReader.ReadLine() ... e segue sua leitura do arquivo
quinta-feira, 23 de agosto de 2012 12:54
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.