в душе не знаю. Я ещё не сильно разобрался в механизмах потоков: Вот так это в потоке выглядит procedure TReadThread.DoRead; var arrBytes: array of Byte; i: Integer; begin if Assigned(FComPort.FReadEvent) then begin SetLength(arrBytes, FRead); for i := Low(FBuf) to FRead - 1 do arrBytes[i] := FBuf[i]; FComPort.FReadEvent(Self, arrBytes); arrBytes := nil; end; end;
н это наверное то что черзез синхронизацию дергается, вот тут помещай эти данные куда нибудь в буфер и потом PostMessage делай, оно разгреьет сообщение когда основной поток не нагружен будет и тогда по одному выбирай из заполненого ране буфера
Обсуждают сегодня