о! вот тут ты и обкакался. С момента когда таймер тикнул до момента когда запустится твоя процедура пройдет столько времени, сколько необходимо текущей задаче чтоб завершиться- а это может быть долго, допустим прорисовка многомерного графика или еще чо тяжелое. А если ты следишь за портом в потоке то сразу как появится признак приема тамже в потоке и запускаешь свою процедуру, никак не завися от того чо там творится в диалоге, он сам посебе порт в потоке сам посебе.