This is what I see in your post...
Requirement 1:
I need to display the progress of a large background process
Requirement 2:
each one needs to be placed into the To Do list
Requirement 3:
then moved to the processed list once it has been completed
So, you are going to have 3 lists- one showing the ToDo, completed, and currently running process.
I would load the file names or whatever it is that needs to be displayed in the todo list 10 or 20 at a time and the same with the completed list. Depending on the file size and what kind of processing is going on, you may complete the background process before the list is ever populated (simulated race condition) at 200,000 lines. After processing 20 files or so I would save the completed list to a flat file, XML file or similar in case something happened to the app, that way you could have a reference to look up to determine the last file processed. This would prevent displaying 200,000 records in a list.
Think of it like a baseball game where you have players in the dugout (todo), players on the bases (completed), players on deck (currently run process) and the scoreboard as your record keeper.
Hope that helps.