A BackgroundWorker is essentially a thread - so you don't want to run one worker multiple times, you want to run multiple workers on the same code. That's easy to do: just create a new BackgroundWorker for each text file and pass each instance a different file to process. All you need for that is a loop for the files, and a copy of your existing code inside it:
foreach (string file in files)
{
BackgroundWorker work = new BackGroundWorker();
...
work.RunWorkerAsync(file);
}
You can then pick up the file from the e.Argument property inside the DoWork event handler.