@Cantarino,Não é todo o segundo, mas é de 10 em 10 segundos no MÁXIMO.
(ACHO que) Não dá pra fazer com simples Threads...
@ALL
Mundo real:
Tenho um sistema de agendamento de SMSs e alguns são agendados para ser enviado na hora/minuto/segundo marcado.
Outros precisam ser enviados imediatamente, assim que a mensagem chega no servidor de banco de dados (num servidor hospedado em um host remoto)
Como funciona hoje: Tenho um Serviço Windows que a todo momento (a cada 4 segundos para ser mais preciso), eu faz uma consulta no meu SQLServer(também no host remoto) perguntando se tem alguma mensagem pendente de envio... se tiver, ele envia e registra o envio no banco. 4 segundos depois disso, repete-se o processo, pois uma nova mensagem pode chegar a qualquer momento com envio imediato. Isso funciona bem, mas o trafego de dados na minha rede e internet é muito grande... sem contar o processamento de queries no SQLServer à cada 4 segundos.
Minha ideia: Ao invés de ficar perguntando à cada 4 segundos pro servidor se tem alguma coisa nova pra mim, gostaria de ser avisado quando chegar alguma coisa nova. Então, eu teria uma lista (em memória) dos Id's e Agendamentos das mensagens programadas para envio.
Quando o servidor (hospedado em um host remoto) receber uma mensagem nova, ele grava no banco e atualiza essa lista através de um WebService (Aplicativo "A") no meu PC (onde tenho um hardware específico pra isso instalado).
Em paralelo à isso, o Serviço Windows (Aplicativo "B") também no meu PC, continua funcionando de forma similar, mas ao invés de perguntar pro servidor remoto, pergunta pra lista compartilhada em memória.
Bem, é isso!