を使用して作成されたスレッドから UI のコントロールを更新する際に問題が発生しています
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 で、コントロールをパネルに追加します。
私の問題は、コントロールと panel1.InvokeRequired が false に対して呼び出した後でも、エラーが発生することです
panel1.Controls.Add(li);
通常の行
別のスレッドで作成されたコントロールと対話するには、Control.Invoke を使用する必要があります。
誰でも問題を見つけることができますか? インボークを使用して別のスレッドのコントロールにアクセスすることは、これまで何度も行ってきたことですが、これには困惑しました!
ティア
ワンショット