ここで理解しようとしている主にスパゲッティ コード (C#/VB の組み合わせ) をいくつか継承しました。
これは、次の形式のデリゲートの DynamicInvoke メソッドを呼び出すことによって行われる、リモート オブジェクトへのイベントを発生させるための 2 つの連続した呼び出しがあるという、非常に奇妙な状況のようです。
delegate1.DynamicInvoke(args1);
// some code here
delegate2.DynamicInvoke(args2);
delegate1 と delegate2 はどちらも、同じリモート「サブスクライバー」オブジェクトのメソッドを参照しています。
ドキュメントで読むことができるすべてによると、DynamicInvokeは同期する必要があるようです。しかし、リモート プロセスにブレークポイントを設定すると、デリゲート 1 とデリゲート 2 によって参照されるメソッドが異なるスレッドで同時に実行されていることが目の前でわかります。
これは別のマイクロソフトの「文書化されていない機能」ですか? 私はこれを期待すべきでしたか?なぜこれが必要なのかについての説明はありますか?また、非同期で実行することを意図している場合、DynamicInvoke はどのようにして戻り値を取得できるのでしょうか?
ありがとう!シャウル