Perché utilizzi sia TextReader che File.ReadList? Non basta solo il secondo?
1. ReadList e riempi numbersList
2. loop su numbersList ed invii SMS eliminando il numero o anche preponendo/accodando un simbolo che indichi "operazione eseguita"
3. WriteList e salvi la lista nel nuovo stato
Per la questione spam, potresti utilizzare un timer che regoli il nuimero di invii in un determinato lasso di tempo. Ad esempio, ogni cinque SMS lasci passare due minuti e così via.
Direttamente dalla definizione di ReadList (pseudocode):
If File.Exists(File.DirInternal, "numberscopiato.txt") = True Then
dim numbersList as List = File.ReadList(File.DirInternal, "numberscopiato.txt")
for i = 0 to numbersList.size -1
dim riga as string = numbersList.get(i)
'check che non sia vuota e non abbia il carattere # ad indicare SMS già inviato
if ok then
wait for InvioSMS(recapito) Complete (obj as Object)
'marco riga/recapito come inviato
end if
loop
file.writelist(File.DirInternal, "numberscopiato.txt", numbersList)
end if
Potresti utilizzare un boolean in InvioSMS per dire se sia andato a buon fine o meno e di conseguenza decidere se marcare quel recapito o meno.
Nota. la lista viene aggiornata sul device solo al termine del loop