2

以前はこのフォーラムを参照して回答を見つけていましたが、今回は次の質問を完全に理解できるものを見つけることができませんでした。

私はこのプログラムを持っています:

IAsyncResult asrr;
        DELG d = (o) =>
        {
            short i = 10;
            string msg = (string)o;
            while (i > 0)
            {
                Console.WriteLine("Work - > {0}::{1}", i, msg);
                System.Threading.Thread.Sleep(1000);
                i--;
            }
        };
        asrr = d.BeginInvoke(((object)("T1")), (asr) =>
        {
            DELG dlg = (DELG)((System.Runtime.Remoting.Messaging.AsyncResult)asr).AsyncDelegate;
            dlg.EndInvoke(asr);
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("callback");
            Console.ForegroundColor = ConsoleColor.Gray;
        }, d);

次に、ここで何が起こっているかを理解したと思います: asrr を使用して非同期的に呼び出されるデリゲートがあります。デリゲートにいくつかの引数 'd' を与えます: デリゲートに表示される T1、コールバック メソッド (この演習で必要だったのでラムダ メソッドを使用しています)、およびデリゲート d です。

よくわかりません... T1 を送信することは理解していますが、"(asr)" はどこから来るのでしょうか? begininvoke の後に何が起こっているのか、何が起こっているのかわかりません。

DELG dlg = (DELG)((System.Runtime.Remoting.Messaging.AsyncResult)asr).AsyncDelegate;

ここでも asr を確認できますが、理解できません。

私はこのリンクを見つけました: デリゲートとイベント しかし、それは私を助けましたが、私はまだそれをすべて理解していません. それについての情報を教えてください。

着信回答に感謝します。

4

3 に答える 3

0

asr匿名デリゲートの入力パラメーターです。詳細については、 http://msdn.microsoft.com/en-us/library/vstudio/bb397687.aspxを参照してください。

デリゲートには、1 つの入力パラメーターを持つ署名があります。asr中括弧の間の関数ブロックで参照されるように入力パラメーターを宣言します。

于 2013-10-29T09:08:47.340 に答える
0

あなたは呼び出しで宣言しています - 持っている部分asrは宣言です。型が推測されます。BeginInvoke(asr) =>

于 2013-10-29T09:07:10.487 に答える