c# Event Creation: Raise vs invoke
<p>Before C#6, i was using this routine to deal with generating events in a multi threaded program: (i found it somewhere, but can't remember where):</p>

<pre><code> 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) &amp;&amp; synchronizeInvoke.InvokeRequired)
                    retVal = synchronizeInvoke.EndInvoke(synchronizeInvoke.BeginInvoke(d, new[] { sender, e }));
                else
                    retVal = d.DynamicInvoke(sender, e);
            }
        }
        return retVal;
    }
</code></pre>

<p>so all i had to do was Eventname.Raise(...,....)</p>

<p>now with C#6, i know the new was it using something like:
    Eventname?.Invoke(...);</p>

<p>what i am wondering is, should i change all my event creations to Invoke as it works different to the Raise(), or is it the same thing ?</p>