2011-07-02 13 views
0

CallbackMethodSendRegistrationのAsyncSendRegistrationMethodに送信されるLabelが必要です。 sendRegistrationDelegateに渡されたラベルへの参照を取得するコールバックの非同期メソッドに渡されるパラメータを取得する方法

private delegate ResponceFromServer AsyncSendRegistrationDelegate(RegistrationToUser registrationToUser, Label label); 
private ResponceFromServer AsyncSendRegistrationMethod(RegistrationToUser registrationToUser, Label label) 
{ 
    SetText(label, registrationToUser.Name + " registration..."); 


    return Requests.DataBase.Authorization.Registration(
     registrationToUser.Name, 
     registrationToUser.IdRoleUser, 
     registrationToUser.IdGroup); 
} 
private void CallbackMethodSendRegistration(IAsyncResult ar) 
{ 
    var sendRegistrationDelegate = (AsyncSendRegistrationDelegate)ar.AsyncState; 

    var responceFromServer = (ResponceFromServer)sendRegistrationDelegate.EndInvoke(ar); 
    if(responceFromServer.IsError) 
    { 
     //here need label.Text 
    } 
    else 
    { 

    } 
} 

答えて

3

一つの方法は、コールバックがラムダも持つことです。コールサイトでは、次のようになります。

var registrationToUser = ...; 
    var label = ...; 

    sendRegistrationDelegate.BeginInvoke(registrationToUser, label, ar => 
    { 
     var responceFromServer = sendRegistrationDelegate.EndInvoke(ar); 
     if (responceFromServer.IsError) 
     { 
      label.Text = ""; 
     } 
     else 
     { 

     } 
    }, null); 
関連する問題