83K Einträge?
Dann würde ich erst einmal ausprobieren, wo genau er hängt.
Für so ein einfaches Listview sind 83K schon extrem viel, könnte mir vorstellen, daß es daran liegt. Da würde ich wahrscheinlich doch auf eine virtuelle Liste (OwnerData = true) umsteigen.
Dazu musst Du alle Daten in einem globalen Objekt speichern (also z.B. deine jetzige interne Stringliste als im private-Teil der Form schon definieren, dann die OnData-Methode implementieren, und nach dem runterladen "einfach" lvNewsGroups.Items.Count := formweiteListe.Count setzen... gibt hier bestimmt schon irgendwo ne kurze Anleitung dafür
Alternativ zu der einfachen Stringliste, die in OnData (oder hieß es OnOwnerData? Irgendwie so
) jedesmal ein idNNTP1.ParseNewsGroup auslösen müsste, um alle deine Infos zu bekommen, könntest Du auch eine TCollection nehmen und dort alle Daten etwas komfortabler vorspeichern...
Oder sogar auf einen TVirtualStringTree ausweichen... auf jeden Fall aber virtualisieren, 83K Einträge vom Windows-Listview selber verwaltet sind
imho immer sehr sehr langsam bis hängend wirkend...