Ir para conteúdo
  • Cadastre-se

dev botao

Trabalhando com Threads e ACBR


  • Este tópico foi criado há 3098 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Em uma classe tenho esse método 

 

private void CarregamentoInicial()
        {
            var thread = new Thread(() =>
            {
                try
                {

                    _viewModel.CarregamentoInicial();
                    Dispatcher.Invoke(new MethodInvoker(AbrirLogin));
                    Dispatcher.Invoke(new MethodInvoker(Close));
                }
                catch (ExceptionMd5 ex)
                {
                    MessageBox.Show(ex.Message);
                }
                catch (InvalidOperationException ex)
                {
                    MessageBox.Show(ex.Message);
                }
            });

            thread.SetApartmentState(ApartmentState.STA);
            thread.Start();
        }

 

No meu método _viewModel.CarregamentoInicial();

tenho o seguinte conteúdo.

 

public void CarregamentoInicial()
        {
            try
            {
                var acbrEcf = AcbrFactory.ObterAcbrEcf();

                new Thread(() =>
                {
                    Informacao = "Gerando arquivo MD5";    
                }).Start();
                
                var md5 = new GerarMd5();
                md5.Executar();

                new AtualizarMd5(md5.Md5Final).Executar();

                new Thread(() =>
                {
                    Informacao = "Connectando com Ecf";    
                }).Start();
                

                new EcfInicializa().Iniciar();
                
                acbrEcf.IdentificaPAF("StarkPdv 1.0", md5.Md5Final);
            }
            catch (ExceptionMd5 ex)
            {
                throw new ExceptionMd5(ex.Message, ex);
            }
            catch (Exception ex)
            {
                throw new InvalidOperationException(ex.Message, ex);
            }
        }

 

no primeiro método temos uma Thread

ele executa tudo ok, mas

quando na aplicação eu vou efetuar o login e faço uma verificação de acbr.NumSerie

ele lança a seguinte exception

An unhandled exception of type 'System.AccessViolationException' occurred in ACBrFramework.Net.dll

Additional information: Tentativa de leitura ou gravação em memória protegida. Normalmente, isso é uma indicação de que outra memória está danificada.

 

Dentro do atributo acbr.NumSerie (e outros vários atributos tenho uma exception)

'acbr.NumSerie' threw an exception of type 'ACBrFramework.ACBrExcepiton'

 

o meu problema e basicamente rodar o acbr dentro de uma thread com sucesso (e a solução que espero)

obs: si eu retirar a Thread , a acbr irá funcionar perfeitamente não irá lançar nem uma exception , funciona tudo beleza

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

Assim, queria colocar tudo numa splash screen (uma tela de load)

enfim...

Descobri o problema, olha não sei o motivo mas eu tive simplesmente que instanciar os componentes da ACBR primeiro , se eu instancio uma variável qualquer antes,

os componentes da acbr ficam cheio de exceptions dentro deles e lançando erro citado a cima.

 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3098 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...