Witam. Moim problemem jest głównie odczytanie części wierszy z kontrolki ListBox.
Aktualnie wczytuje wiersze przy pomocy

listBox1.Items.Count

(odczytuję na raz całą zawartość ponieważ takie było początkowe założenie, no ale niestety się zmieniło i chcę uruchomić na raz 2 -3 procesy każdy z przedziałem np. 1-500, 501 ... itd.) jednakże nie mam pomysłu jak to przerobić. Poza tym potrzebowałbym fragmentu kodu, który po odczytaniu pustego przedziału po prostu nie ruszy. a tutaj część kodu (odpowiedzialnego za asynchroniczne wysyłanie meili) :
SmtpClient klient;
int wyslano;
int bledy;

private void button3_Click(object sender, EventArgs e)
{
    try
    {
        klient = new SmtpClient(textBox2.Text);
        klient.EnableSsl = false;
        klient.Credentials = new NetworkCredential(textBox3.Text, maskedTextBox1.Text);
        klient.SendCompleted += new SendCompletedEventHandler(klient_SendCompleted);
        wyslano = bledy = 0;

        lblPostep.Text = "";
        WyslijWiadomosc();
    }
    catch (Exception ex)
    {
        MessageBox.Show("Błąd: " + ex.Message);
    }
    button3.Enabled = false;
}

void klient_SendCompleted(object sender, AsyncCompletedEventArgs e)
{
    if (e.Cancelled || e.Error != null)
        bledy++;
    if (wyslano < listBox1.Items.Count)
    {
        WyslijWiadomosc();
    }
    else
    {
        WyswietlPodsumowanie();
        MessageBox.Show("Wysyłanie zakończone","Status wysyłania", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
}

private void WyslijWiadomosc()
{
    
        string adres = listBox1.Items[wyslano].ToString();
        wyslano++;
        WysylanieWiadomosci(klient, adres);
        WyswietlPodsumowanie();
    
}

private void WyswietlPodsumowanie()
{
    lblPostep.Text = string.Format("Przetworzono {0} z {1} wiadomości.\nNie udało się wysłać: {2}.", wyslano, listBox1.Items.Count, bledy);
    lblPostep.Refresh();
}

private void WysylanieWiadomosci(SmtpClient klient, string adres)
{
    try
    {
        MailMessage wiadomosc = new MailMessage();
        MailAddress Do = new MailAddress(adres);
        wiadomosc.To.Add(Do);
        wiadomosc.From = new MailAddress(textBox4.Text);
       // wiadomosc.IsBodyHtml = true;
        wiadomosc.IsBodyHtml = checkBox1.Checked;
        wiadomosc.Subject = textBox5.Text;
        wiadomosc.Body = textBox6.Text;

        klient.SendAsync(wiadomosc, null);
    }
    catch (Exception)
    {
        bledy++;
        WyswietlPodsumowanie();
        WyslijWiadomosc();
    }
} 
 

Potrzebowałbym konkretnych przykładów jak mogę to zrobić ponieważ zbliża się termin oddania projektu ..