Может Вы даете обьектам EVENT входящим в эту структуру одинаковые имена? т.е
ovr.hEvent:=CreateEvent(nil,FALSE,FALSE,'RX_COMPL');
где 'RX_COMPL' - имя события.
если так то получится что в разных программах(или потоках) Вы используете одно и тоже событие.
P.S.
И еще вместо функции WaitCommEvent и проверки if (TransMask and EV_RXFLAG)=EV_RXFLAG лучше истользовать связку функций
WaitCommEvent и WaitForSingleObject в которой в качестве ожидаемого
события указать ovr.hEvent. При этом уменьшится загрузка системы.
пример:
WaitCommEvent(port,res,@ovr);
while not Terminated do begin
res:=WaitForSingleObject(ovr.hEvent,500);
case res of //Различн действия в зав. от рез. ожидания.
WAIT_OBJECT_0:// пришел байт данных.
..................
end;
ResetEvent(ovr.hEvent)//если событие создавалось с ручым сбросом
WaitCommEvent(port,res,@ovr);
end;
E-mail: info@telesys.ru