@Juliomar Marchetti basicamente iniciei um projeto do tipo Service Application e fiz os seguintes passos:
1-A plicação cliente insere uma NFCe numa tabela com o status interno 1 e fica aguardando por até 25 segundos
2-Os Status possíveis são: 1-Para Enviar, 2-Erro, 3-Corrigido, 4-Enviando, 99-Enviado
3-O Serviço fica monitorando essa tabela e procura NFCes com os status 1 e 3 (para enviar e corrigido)
4-Quando o serviço detecta NFCes nesses status ele tenta enviá-los, em sucesso ele gera o XML e PDF e guarda numa outra tabela nfe_arqs (que contem em formato binários o XML e o PDF gerados) em caso de erro sistema emite o NFCe em forma offline para posteriormente ser corrigido e reenviado em até 24hrs
5-A Aplicação cliente que estava num laço aguardando lê o novo status que na maioria das vezes é 99 (enviado) e nesse momento carrega o XML e emite o NFCe, caso o status seja erro o sistema informa que o NFCe será emitido em forma offline para liberar o caixa.
6-O serviço fica rodando em segundo plano e a cada 1 segundo verifica a tabela de NFCes