Avant C# 6, j'utilisait cette routine pour faire face à générer des événements dans un programme multithread: (je l'ai trouvé quelque part, mais ne se souvient pas où):C# Création de l'événement: Raise vs invoquez
public static object Raise(this MulticastDelegate multicastDelegate, object sender, EventArgs e)
{
object retVal = null;
MulticastDelegate threadSafeMulticastDelegate = multicastDelegate;
if (threadSafeMulticastDelegate != null)
{
foreach (Delegate d in threadSafeMulticastDelegate.GetInvocationList())
{
var synchronizeInvoke = d.Target as ISynchronizeInvoke;
if ((synchronizeInvoke != null) && synchronizeInvoke.InvokeRequired)
retVal = synchronizeInvoke.EndInvoke(synchronizeInvoke.BeginInvoke(d, new[] { sender, e }));
else
retVal = d.DynamicInvoke(sender, e);
}
}
return retVal;
}
donc tout ce que je devais faire était Eventname.Raise (..., ....)
maintenant avec C# 6, je sais que la nouvelle était en utilisant quelque chose comme: eVENTNAME .invoke (.. .); Ce que je me demande, est-ce que je me demande, devrais-je changer toutes mes créations d'événement à invoquer comme cela fonctionne différent à l'augmenter(), ou est-ce la même chose?
Merci pour le commentaire. Je vais changer le code Raise(). Merci pour l'aide. – Tony