Invoke в J#

Криворукий

Пытаюсь изменить контролс из второго потока. Делаю это как описано тут.Обьявляю делегат.
public delegate void DrawSafety(PictureBox box);
Вызываю Invoke[SRC j#] private void DrawingSafety(PictureBox box) { if (box.get_InvokeRequired()) { box.Invoke(new DrawSafety(DrawingSafety), new Object[] { box }); } else Drawing(); }[/src]Но J# компилятор выдает ошибку что он:Cannot find method 'Invoke(DrawSafety, Object[])' in 'System.Windows.Forms.PictureBox'Почему DrawSafety в даном случае не является делегатом?
9 ответов

Криворукий

Вызываю Invoke[SRC с#] private void DrawingSafety(PictureBox box){if (box.get_InvokeRequired()){box.Invoke(new DrawSafety(DrawingSafety), new Object[] { box });}else Drawing();}[/src]Но J# компилятор выдает ошибку что он:Cannot find method 'Invoke(DrawSafety, Object[])' in 'System.Windows.Forms.PictureBox'


Криворукий

Попытка номер 3.Вызываю Invoke
private void DrawingSafety(PictureBox box)
{
if (box.get_InvokeRequired())
{
box.Invoke(new DrawSafety(DrawingSafety), new Object[] { box });
}
else Drawing();
}
Но J# компилятор выдает ошибку что он:Cannot find method 'Invoke(DrawSafety, Object[])' in 'System.Windows.Forms.PictureBox'


Криворукий

Попробовал вот так:
public void DrawingSafety(PictureBox box)
	{
		if (box.get_InvokeRequired())
		{
			Delegate dlg = Delegate.CreateDelegate(Type.GetType("Server.DrawSafety"), this, "DrawingSafety");
			box.Invoke(dlg, new Object[] { box });
		}
		else Drawing();
	}
В результате выдает исключение:Type must derive from Delegate.Parameter name: type


Криворукий

Криворукий,+1Давай пятую попытку..


Криворукий

J# уж давно похоронили еще с 2005 студии, а вы тут таким занимаетесь.


Криворукий

Обьясните это преподу, старому маразматику.


Криворукий

Обьясните это преподу, старому маразматику.
Ну пусть он сам и расскажет как делать. Скажи ему что никто не знает. Тут пусть отпишет...


Криворукий

Для тех кто в танке,
/**@delegate*/
public delegate void DrawSafety(PictureBox box);
/**@delegate*/ -- обязательно, это не комментарий, а параметр аналог(для примера только) для C#
[System.Delegate]
delegate void DrawSafety(PictureBox box);


Криворукий

NEKDS,Зарегистрировался только для того чтобы в поиске ошибок кроме ещё и решение было:)читаем подробнее здесь https://blogs.msdn.microsoft.com/premk/2005/11/25/how-to-create-system-delegate-in-j/