Problema com Hyperthreading e Threads fora de ordem

Pessoal,

eu fiz um aplicativo para imprimir em uma dessas impressoras de códigos de barra mas, como o programa permite que várias impressões sejam feitas em seguida, colocando o valor inicial e o final, no decorrer da impressão as etiquetas saem fora de ordem.

Como faço para forçar a execução do código em apenas uma thread?

Mais uma coisa…

vale lembrar que eu não posso usar o /affinity já que este programa será executado em muitos computadores diferentes.

cara, acho que cada um deve enviar para algum tipo de fila e dai um outro servico faz essa impressão pra ti … mas a estrutura tem que ver como se encaixa na aplicação…

eu envio para fila…

só que como eu envio diversas etiquetas, este envio acaba sendo fora de ordem (por causa da segunda thread)…

Se a aplicação é multi-thread, não há como garantir a ordem, a menos que você crie alguma fila de prioridades. Cada pedido de impressão deve ir numerado com a ordem que ele deve aparecer.

Ou então, use uma única thread.

Mas é isso mesmo que eu quero saber, como faço para forçar o uso de uma única thread?

Alguém???

Cara, tu pode até fazer multithread, porem com uma thread apenas que faz a impressão, dai tu envia os objetos a serem impressos para ela e ela trata a ordem de chegada. pode utilizar metodos sincronizados também para entrega,.

Valeu…

Olha, para responder como passar de várias para uma só thread, teríamos que conhecer todo o seu algoritmo.

Você pode fazer a thread de impressão ter uma fila, e colocar um campo “ordem” no pedido de impressão. Essa thread deveria esperar pedidos e só imprimi-los quando a ordem estiver correta…