public void CancelaEncomenda(object aux)
    {
        ComunicacaoBD comunicacaoBD = new ComunicacaoBD();
        WEBooksDistribuidorAp.LogMensagens text = new WEBooksDistribuidorAp.LogMensagens();

        ComunicacaoFila comFila = new ComunicacaoFila();

        string idEncomenda = EncomendaWEBooks.IdEncomenda;
        try
        {
            string ultimoEstado = servico.getEstado(idEncomenda, comunicacaoBD);

            if (ultimoEstado == "colocada" || ultimoEstado == "pendente")
            {
                servico.alteraEstado(idEncomenda, "cancelada", comunicacaoBD);

                //Espera 5 seg antes de responder a WEBooks
                Thread.Sleep(new TimeSpan(0, 0, 5));
                EncomendaWEBooks.TipoMensagem = "cancelada";
                comFila.escreveFilaWeb(EncomendaWEBooks);

                text.actualizaLog(EncomendaWEBooks.TipoMensagem, false);
            }
            else
            {
                comunicacaoBD.Transacao.Rollback();
                throw new Exception("Erro: estado da encomenda nao permite que seja cancelada");
            }
        }
        catch (SqlException es) {
            comunicacaoBD.Transacao.Rollback();
            throw new Exception("ERRO: Nao é possivel Cancelar encomenda");
        }
        comunicacaoBD.Transacao.Commit();
    }
    public void TempoVidaEncomenda(object aux)
    {
        WEBooksDistribuidorAp.LogMensagens text = new WEBooksDistribuidorAp.LogMensagens();

        Encomenda encomenda = new Encomenda(EncomendaWEBooks);

        ComunicacaoFila comFila = new ComunicacaoFila();

        InsereEncomenda(ref encomenda); //fica logo no estado colocada

        //Envia mensagem de aviso de mensagem colocada, na WEBooks fica pendente

        if (encomenda.TempoEspera != 0) {
            PendenteEncomenda(encomenda.IdEncomenda);

            //Espera 5 segundos antes de enviar a resposta a WEBooks
            EncomendaWEBooks.TipoMensagem = "pendente";
            Thread.Sleep(new TimeSpan(0,0,5));
            comFila.escreveFilaWeb(EncomendaWEBooks);

            text.escreveNoLog =  "Enviada: " + EncomendaWEBooks.TipoMensagem;
        }

        Thread.Sleep(new TimeSpan(0, 0, encomenda.TempoEspera));//vai esperar que fiquem todos os livros disponiveis

        try
        {
            EncomendaWEBooks.TipoMensagem = "entregue";
            Thread.Sleep(new TimeSpan(0, 0, 5));
            comFila.escreveFilaWeb(EncomendaWEBooks);

            EntregueEncomenda(encomenda.IdEncomenda);
            text.actualizaLog(EncomendaWEBooks.TipoMensagem, false);

        }
        catch (Exception) {
            //nao faz nada, significa que mensagem foi cancelada anteriormente
        }

        //fim do tempo de vida da encomenda
    }