У меня возникли проблемы при обновлении элемента управления на мой пользовательский интерфейс с резьбой, созданные с помощьюC# WM6 Compact Framework Cross Thread Связь Проблема
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 правда так делегат инст а затем вызывается, теперь в этой записи в addControlToPanel(), panel1.InvokeRequired == false, поэтому я добавляю элемент управления к панели.
Моя проблема заключается в том, что даже после вызова против контроля и panel1.InvokeRequired ложным я получаю сообщение об ошибке на
panel1.Controls.Add(li);
линии с указанием обычного
Control.Invoke должно использоваться для взаимодействия с элементы управления, созданные в отдельном потоке.
Может ли кто-нибудь обнаружить проблему? Использование invoke для доступа к элементам управления в другом потоке - это то, что я делал много раз раньше, но это меня сильно раздражает!
ТИА
ONESHOT