Я получаю ArgumentException из следующего кода, я пытаюсь понять, что последняя запись в трассировке стека
System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, BindingFlags invokeAttr,
Binder binder, Object[] parameters, CultureInfo culture,
Boolean verifyAccess, StackCrawlMark& stackMark)
Когда я делаю шаг через DeviceResponse, он заполняется, как я ожидаю, и цель находится и, как и ожидалось, но targetForm.Invoke выбрасывает каждый раз
Любая помощь будет высоко ценится.
Событие определяется как:
public static event EventHandler<MsgEventArgs<DeviceResponse>> DeviceResponseReceived;
Событие вызывается из этого кода:
//Raise the event
if (DeviceResponseReceived != null)
{
if (DeviceResponseReceived.Target is System.Windows.Forms.Form)
{
System.Windows.Forms.Form targetForm = DeviceResponseReceived.Target as System.Windows.Forms.Form;
targetForm.Invoke(DeviceResponseReceived, new MsgEventArgs<DeviceResponse>(deviceResponse));
}
}
MsgEventArgs - это универсальный класс аргументов события, производный от EventArgs:
public class MsgEventArgs<T> : EventArgs
{
public MsgEventArgs(T value)
{
m_value = value;
}
private T m_value;
public T Value
{
get { return m_value; }
}
}
В своей форме я зарегистрировался на событие в конструкторе форм:
DeviceResponse.DeviceResponseReceived += new EventHandler<MIASmartClient.Messaging.Transport.MsgEventArgs<DeviceResponse>>(DeviceResponse_DeviceResponseReceived);
С реализацией как:
void DeviceResponse_DeviceResponseReceived(object sender, MIASmartClient.Messaging.Transport.MsgEventArgs<DeviceResponse> e)
{
_presenter.DeviceResponseReceived(e.Value);
}
Спасибо, что нашли время взглянуть