Rasm,

So you set the timer for 1/2 second and during that time you keep Windows occupied on other things. Then when the timer times out you read the data from the Analyzer, signal that the data packet has been received and reset the timer to grab the next data packet.

1) If you were to measure the amount of time it takes for the packet to be successfully imported, then you could programmatically set the delay time to remove any deadtime when nothing is getting done.
2) I have found that data feeds don't work very well unless your code actually stops running. For example, if you decided to use a do loop nothing would get done because the CPUs won't allow any other process to run, including data feeds. The reason for this is that many data feeds are not designed to be parallel in nature.
3) Your solution is particularly interesting in that you have stopped the code and through the use of DoEvents you have allowed the data feed to update, doesn't work with all feeds though.
4) The other approach is to create a query data table that is linked to your feed database. No code or csv files would be necessary in this scenario. The data would just show up.

Thank you for your feedback.

Steve