I just tried your code, with the exception of "Port(i).MyTag = I" because there is no MyTag property, and then I also added a button to my form with the click handler code with this:
Port(1).BeginRead("F428677")
I ran the application and clicked the button several times, but both files are still collecting at 20 second intervals in my test.
Dec-03-2016 01:36:58 PM,890
Dec-03-2016 01:37:18 PM,890
Dec-03-2016 01:37:38 PM,890
Dec-03-2016 01:37:58 PM,890
Dec-03-2016 01:38:18 PM,890
Dec-03-2016 01:38:38 PM,890
Dec-03-2016 01:38:58 PM,890
Dec-03-2016 01:39:18 PM,890
Dec-03-2016 01:36:58 PM,345
Dec-03-2016 01:37:18 PM,345
Dec-03-2016 01:37:38 PM,345
Dec-03-2016 01:37:58 PM,345
Dec-03-2016 01:38:18 PM,345
Dec-03-2016 01:38:38 PM,345
Dec-03-2016 01:38:58 PM,345
Dec-03-2016 01:39:18 PM,345
Is there something more you are doing that I am missing?