を上げて対呼び出す、私は、マルチスレッドプログラムで生成するイベントに対処するために、このルーチンを使用していた。(私はどこかでそれを見つけましたが、どこ覚えていないことができます):C#のイベントの作成:C#6前
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;
}
?
ので、私がしなければならなかったすべては、私は新しいが、それが何か使用していた知っている、C#6で今
Eventname.Raise(...、...)
た: EVENTNAME .Invokeを(.. )。Raise()と違って動作するか、同じものなので、すべてのイベント作成をInvokeに変更する必要がありますか?
コメントありがとうございました。 Raise()コードを変更します。助けてくれてありがとう。 – Tony