Je vais avoir un problème de mise à jour d'un contrôle sur mon ui d'un nouveau thread utilisantC# WM6 Compact Framework Cross fil Problème de communication
ThreadPool.QueueUserWorkItem
Dans ce fil, je fais appel
addControlToPanel(li);
Comme le montre ici
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);
}
}
Lors de la première entrée à addControlToPanel() panel1.InvokeRequired == true si un délégué est inst antiated puis invoqué, maintenant sur cette entrée dans addControlToPanel(), panel1.InvokeRequired == false donc j'ajoute le contrôle au panneau.
Mon problème est que même après avoir invoqué contre le contrôle et panel1.InvokeRequired étant faux, je reçois une erreur sur le
panel1.Controls.Add(li);
ligne indiquant l'habituel
Control.Invoke doit être utilisé pour interagir avec contrôles créés sur un thread séparé.
Quelqu'un peut-il repérer le problème? Utiliser invoke pour accéder aux contrôles sur un autre thread est quelque chose que j'ai fait plusieurs fois auparavant mais celui-ci m'a bloqué!
TIA
Oneshot