C# Invoke работает не как надо, почему?
delegate void SetImageCallback(Control contrl, System.Drawing.Bitmap actImage);
…
this.SetImg(s1, global::myPr.Properties.Resources.s1_green); // обращение на изменение изображения
…
private void SetImg(Control contrl, System.Drawing.Bitmap actImage)
{
if (contrl.InvokeRequired)
{
SetImageCallback I = new SetImageCallback(SetImg);
cntrl.Invoke(I, new object[] { cntrl, actImage });
}
else contrl.Image = actImage;
}
Почему не обновляет, где нахомутал?
Аналогичный кусок кода для текстовых - прекрасно работает, а с изображениями - беда.
Добавлю, а такой код в основном потоке прекрасно работает ...
System.Drawing.Bitmap bm = global::WindowsFormsApplication1.Properties.Resources.s1_green;
pictureBox1.Image = bm;
private void SetImg(PictureBox label, System.Drawing.Bitmap actImage)
{
if (label.InvokeRequired)
{
SetImageCallback I = new SetImageCallback(SetImg);
label.Invoke(I, new object[] { label, actImage });
}
else
{
label.Image = actImage;
}
}
(тихо сам с собою...)
Можно было еще и приведением типов справиться, а может даже и что-то вроде contrl.Refresh() после присвоения значения могло помочь.