Итак, я пишу небольшой клиент Twitter для использования. Я использую комбинацию из одной большой панели с меньшими панелями, представляющими отдельные твиты. На каждой меньшей панели у меня есть PictureBox и RichTextBox.
Теперь моя проблема в том, что загрузка более 10 твитов вызывает замедление, потому что я динамически генерирую панели. Поэтому я решил сделать это с помощью BackgroundWorker, а затем добавить эти панели на главную панель.
Я делал это много раз, записывая текст в текстовое поле из другой группы (даже написал учебники по нему). Все же я не могу заставить это работать. Я получаю сообщение об ошибке:
Cross-thread operation not valid: Control '' accessed from a thread other than the thread it was created on.
Код:
List<Panel> panelList = new List<Panel>();
foreach (UserStatus friendStatus in list)
{
PictureBox pbTweet = new PictureBox();
// ...
// code to set numerous properties
// ...
RichTextBox rtbTweet = new RichTextBox();
// ...
// code to set numerous properties
// ...
Panel panelTweet = new Panel();
// ...
// code to set numerous properties
// ...
panelTweet.Controls.Add(pbTweet);
panelTweet.Controls.Add(rtbTweet);
panelList.Add(panelTweet);
}
if (panelMain.InvokeRequired)
panelMain.BeginInvoke((MethodInvoker)delegate { foreach (Panel p in panelList) { panelMain.Controls.Add(p); } });
Кто-нибудь замечает какие-либо проблемы?