【问题标题】:How to get the parameters passed to the asynchronous method in the callback如何在回调中获取传递给异步方法的参数
【发布时间】:2011-09-27 02:49:06
【问题描述】:

我需要一个Label,它被传送到CallbackMethodSendRegistration中的AsyncSendRegistrationMethod。

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
    {

    }
}

【问题讨论】:

    标签: c# callback c#-2.0 asynccallback


    【解决方案1】:

    获取对传递给 sendRegistrationDelegate 的标签的引用的一种方法是将回调设为 lambda。在呼叫站点,这将如下所示:

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

    【讨论】:

      猜你喜欢
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多