2011-07-05 3 views
2

て値を取得する:AsyncCallbackは、私は私が戻って以下のように定義される非同期呼び出しを見たAsyncCallbackのチュートリアルを通過する際に、非同期デリゲートを使用して関数を呼び出す必要が参照変数

static void CallbackMethod(IAsyncResult result) 
{ 
    // get the delegate that was used to call that 
    // method 
    CacheFlusher flusher = (CacheFlusher) result.AsyncState; 

    // get the return value from that method call 
    int returnValue = flusher.EndInvoke(result); 

    Console.WriteLine("The result was " + returnValue); 
}  

場合は私に知らせてください関数からの参照として戻り値を取得できます。例:=私の関数は、ここで私は、参照変数を介して機能からの出力を取得していた形式で

void GetName(int id,ref string Name); 

です。非同期の代理人を使ってこの関数を呼び出すと、コールバック関数の出力をどのように読むことができますか?

答えて

1

あなたがオブジェクトにあなたの引数をラップする必要があります。

class User 
{ 
    public int Id { get; set; } 

    public string Name { get; set; } 
} 

void GetName(IAsyncResult result) 
{ 
    var user = (User)result.AsyncState 
    // ... 
} 

AsyncCallback callBack = new AsyncCallback(GetName); 
0

refパラメータを使用して戻り値を返信しないでください。おそらく

string GetName(int id) 

か:その代わり、に署名を変更する「基準」と「参照渡し」の間には大きな違いがあります

string GetName(int id, string defaultName) // Or whatever 

注こと。この区別を理解することが重要です。

関連する問題