Control.InvokeとControl.BeginInvokeについて多くのことを読み、InvokeはのようなものSendMessage()であり、BeginInvokeのようなものであることを理解していますが、渡されたパラメーターリストがどこに格納されPostMessage()ているのかわかりません。new object[] { arg, arg, arg, ...}従来の呼び出しでは、パラメーターがスタックにプッシュされ、呼び出された関数内でポップされ、終了後に呼び出しフレームがスタックから復元されます。ヒープオブジェクトへの参照を解放して、それらを収集できるようにすることを想定しています。では、プッシュされたスタックの日付はどこに保存されますかInvoke?BeginInvoke呼び出されたメソッドが終了すると、どのように破棄されますか?
また、パスパラメータを使用して新しいオブジェクト配列をロードせずに、制御メソッドを正常に呼び出すことができました。なぜこれが機能するのでしょうか?さらに良いことに、それは機能するので、なぜ私が今まで見たすべての例が新しいオブジェクト配列でそれを示しているのでしょうか?
これは私がいつも見て使用してきたものです:
BeginInvoke(FormReceiveEvent, new object[] { Event, Arg1, Arg2, Arg3 });
しかし、これも機能します。
BeginInvoke(FormReceiveEvent, Event, Arg1, Arg2, Arg3);
どんな情報やコメントも常に歓迎されます...
前もって感謝します。