This is very much possible!
Reasons can be as your thread sleeps for 60 sec only
List<string> catDirs = Directory.EnumerateDirectories(CataloguePath, "*", SearchOption.TopDirectoryOnly).ToList();
And you are creating list in every new thread so what is happening is that the list of folders and its reference is stored again and again. And this is a never ending process so it will keep going on and on and size increases. This get stored in memory so you see this lag.
what I suggest is: Don't open new thread and put a check that last thread is completed or not.
Update: Possible reason as per comments by @Andrew and @Maarten
List<string> catDirs = Directory.EnumerateDirectories(CataloguePath, "*", SearchOption.TopDirectoryOnly).ToList();
for (int index = 0; index < catDirs.Count; index++)
{
//look at time of creation and then delete the directory
Directory.Delete(catDirs[index]);
}
I feel the Forloop is taking time because what might be happening is Directory.Delete(catDirs[index]); starts a new thread itself no what might be happening is there is lot of files to get deleted in queue and queue increases day by day. Thats might be the reason you are seeing lag