Je receving un ArgumentException du code suivant, je me bats pour comprendre la dernière entrée dans la trace de la pile estC# .Net CF Form.Invoke augmenter ArgumentException
System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, BindingFlags invokeAttr,
Binder binder, Object[] parameters, CultureInfo culture,
Boolean verifyAccess, StackCrawlMark& stackMark)
Lorsque je fais un pas dans la DeviceResponse est peuplé comme je l'espère et la cible se trouve et comme prévu mais le targetForm.Invoke jette chaque fois
Toute aide serait grandement appréciée.
L'événement est défini comme:
public static event EventHandler<MsgEventArgs<DeviceResponse>> DeviceResponseReceived;
L'événement est porté de ce code:
//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));
}
}
Les MsgEventArgs est un argument d'événement générique de classes dérivée de EventArgs:
public class MsgEventArgs<T> : EventArgs
{
public MsgEventArgs(T value)
{
m_value = value;
}
private T m_value;
public T Value
{
get { return m_value; }
}
}
Dans mon formulaire je me suis inscrit à l'événement dans le constructeur de formulaires:
DeviceResponse.DeviceResponseReceived += new EventHandler<MIASmartClient.Messaging.Transport.MsgEventArgs<DeviceResponse>>(DeviceResponse_DeviceResponseReceived);
Avec la mise en œuvre:
void DeviceResponse_DeviceResponseReceived(object sender, MIASmartClient.Messaging.Transport.MsgEventArgs<DeviceResponse> e)
{
_presenter.DeviceResponseReceived(e.Value);
}
Merci d'avoir pris le temps de jeter un oeil
En lisant les choses de manière plus approfondie, je suggère une approche différente. Mais c'est vraiment difficile car toutes les déclarations sont prises hors contexte dans la question; Je ne peux pas déterminer dans quelle classe l'événement est déclaré et comment il est lié au formulaire cible. Pourriez-vous mettre à jour les questions avec un échantillon de code plus complet (du moins pour qu'il soit clair dans quelles classes différents éléments sont déclarés et exécutés)? –