Insisto no uso de Thread, pois seu problema é, de fato, parecido com o meu.
O "pulo do gato" (acho que estou ficando velho - já estou começando a usar essas expressões), o "pulo do gato" é você criar uma Thread para se comunicar com as catracas, por conta da DLL. Essa Thread se comunica com outras Threads, que tratam as catracas individualmente. Ao tratar o que tem que ser tratado, você devolve o que que tem fazer para a Thread que se comunica com a catraca. Esquema: 1) ThreadEventos (Se comunica com as catracas) 2) ThreadCatraca1 (Se comunica com o Access) 3) ThreadCatarca2 (Se comunica com o Access) [As partes desta mensagem que não continham texto foram removidas]