У меня проблема с обновлением элемента управления моего пользовательского интерфейса из потока, созданного с использованием
ThreadPool.QueueUserWorkItem
Внутри этой темы я звоню
addControlToPanel(li);
Как показано здесь
private delegate void addControlToPanelDelegate(ListItem li);
private void addControlToPanel(ListItem li)
{
if (panel1.InvokeRequired)
{
addControlToPanelDelegate d = new addControlToPanelDelegate(addControlToPanel);
panel1.Invoke(d, new object[] { li });
}
else
{
panel1.Controls.Add(li);
}
}
При первой записи в addControlToPanel () panel1.InvokeRequired == true, так что экземпляр создается и затем вызывается, теперь для этой записи в addControlToPanel (), panel1.InvokeRequired == false, поэтому я добавляю элемент управления на панель. 1010 *
Моя проблема в том, что даже после вызова элемента управления и panel1.InvokeRequired со значением false я получаю ошибку на
panel1.Controls.Add(li);
строка с указанием обычного
Control.Invoke должен использоваться для взаимодействия с элементами управления, созданными в отдельном потоке.
Кто-нибудь может определить проблему? Использование invoke для доступа к элементам управления в другом потоке - это то, что я делал много раз раньше, но это меня озадачило!
ТИА
ONESHOT