Решалась подобная задача, писал на PureBasic. Открывал в приложении параллельный поток. В нем выполнялась функция приема из COM порта. Пользовался тупым сравнением прошедшего времени в мс. т.е. что то типо того :
Код
DateTime dt= DateTime.Now
while (true)
{
if (dt<=DateTime.Now)
{
//твоя операция
dt=DateTime.Now.AddMilliseconds(20);
}
}
на PureBasic это выглядит несколько иначе:
Код
dT.f=MeasureHiResIntervalStop()
MeasureHiResIntervalStart()
T.f=T+Abs(dT)
If T>=0.020
T=0
;действие
EndIF
Сообщение отредактировал ibiza11 - Jul 21 2011, 13:01