Utworzyłem klasę obsługującą obsługę wątku:
using System;
using System.Windows.Forms;
public class HeadersThread
{
private ListBox listEmailSubjects;
public HeadersThread(ListBox listEmailSubjects)
{
this.listEmailSubjects = listEmailSubjects;
}
public void getHeaders()
{
ImapService iS = new ImapService();
ServersSettings sSettings = new ServersSettings("conf.xml");
sSettings.readSettings();
iS.setServer(sSettings.getImapServer());
iS.getServer().setPass("tajne hasło");
if(iS.readMessages())
{
for(int i=iS.countEmailMessages()-1; i>=0; i--)
listEmailSubjects.Items.Add(iS.getEmailMessage(i).getSubject());
}
else
MessageBox.Show("Nie sprawdzono poczty.");
}
}
Chodzi o to aby lista wiadomości email pobierała się w osobnym wątku i nie blokowała całego programu.
Gdy wywołuję wykonanie wątku w głównym programie:
HeadersThread ht = new HeadersThread(listEmailSubjects);
Thread t = new Thread(new ThreatStart(ht.ThreadFunc));
t.Start();
To robi co do niego należy, ale przy próbie wypełnienia listy pojawia się błąd:
Próba uzyskania dostępu do obiektu, który jest wykorzystywany przez inny wątek.
Jak rozwiązać ten problem?