Witam!
Piszę sobie aplikacje, która ma wykonywać jakieś bliżej nieokreślone czynności na wielu zakładkach.
W formie głównej mam TabControl do którego dynamicznie dodaję zakładki.
Zakładki to moja klasa Sheet, która dziedziczy po TabPage, wyposażona w dodatkowe komponenty.
Chcę aby każda zakładka była osobnym wątkiem, tak aby nie faktycznie można było pracować na kilku z nich, oczywiste... Założenie jest takie, że w każdej zakładce jest BackGroundWorker, który wykonuje jakieś czynności po kliknięciu Start. No i tutaj pojawia się wyjątek: cross-thread operation...
kawałek kodu:
private void addPageToolStripMenuItem_Click(object sender, EventArgs e)
{
this.tabControl.Controls.Add(new Sheet(_counter));
}
dodawanie zakładki
private void backgroundWorker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
for (int i = 0; i < 1000000; i++)
{
this.richTextBox.AppendText("Linia: " + i + '\n');
}
this.buttonStart.Enabled = true;
}
private void buttonStart_Click(object sender, EventArgs e)
{
this.buttonStart.Enabled = false;
this.backgroundWorker.RunWorkerAsync();
}
a to już zdarzenia zakładki...
na razie mają jedynie pojawiać się kolejne linie w richtextbox...
Oczywiście zakładki dodają się poprawnie, wyjątek rzucany jest po kliknięciu start...
Proszę pomóżcie, z informacji jakie udało mi się odnaleźć w necie jakoś nie udało mi się dokładnie zrozumieć co i jak należy zrobić aby poprawnie uruchamiać wątki które mają modyfikować elementy GUI...