Daj si na ten riadok breakpoint (F9) a pozri sa, že či je fronta, currentDownload alebo fronta[currentDownload] rovné null. Potom zisti prečo a oprav to.
K pôvodnej otázke: Metóda LastIndexOf môže vrátiť -1 v prípade, že sa hľadaný text v reťazci nenachádza - je dobré na to myslieť. V tvojom prípade stačí metóde Substring poslať len prvý argument.
Neviem, aké používaš vývojové prostredie, ale Visual Studio ti pri chybe ukáže veľmi presne, v čom je problém. Odporúčam vyvíjať so zapnutým odchytávaním všetkých CLR výnimiek (Ctrl + Alt + E, zaškrtnúť Thrown pre CLR Exceptions).