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 ..