【问题标题】:How to get the parameters passed to the asynchronous method in the callback (not lambda) [duplicate]如何在回调(不是lambda)中获取传递给异步方法的参数[重复]
【发布时间】:2011-09-27 06:04:10
【问题描述】:

可能重复:
How to get the parameters passed to the asynchronous method in the callback

我需要将此 lambda 转换为方法回调

var sendRegistrationDelegate =
    new AsyncSendRegistrationDelegate(AsyncSendRegistrationMethod);

sendRegistrationDelegate.BeginInvoke(registrationToUser, label, ar =>
{
    var responceFromServer = sendRegistrationDelegate.EndInvoke(ar);

    if (responceFromServer.IsError)
    {
        SetText(label, registrationToUser.Name + @" " +
            responceFromServer.ErrorMessage);
    }
    else
    {
        SetText(label, registrationToUser.Name + @" " +
            responceFromServer.Data);
    }
}, null);

【问题讨论】:

  • 为什么要改?
  • 非常相似的问题:stackoverflow.com/questions/6516528
  • @Dark Falcon,我想单独制作 CALLBACK 方法。
  • @dtb,我不明白这个问题的答案。
  • 你的问题没有任何意义。试着澄清一下。

标签: c# asynchronous lambda callback


【解决方案1】:

首先,您了解 lambda 和匿名委托吗?

在这个sn-p中:

    sendRegistrationDelegate.BeginInvoke(registrationToUser, label, ar =>
    // start of method
    {
        var responceFromServer = sendRegistrationDelegate.EndInvoke(ar);

        if (responceFromServer.IsError)
        {
            SetText(label, registrationToUser.Name + @" " +
                responceFromServer.ErrorMessage);
        }
        else
        {
            SetText(label, registrationToUser.Name + @" " +
                responceFromServer.Data);
        }
    }
   // end of method
     , null);

...{ } 的开始和结束标记方法的开始和结束,如下所示:

void AsyncCallbackMethod(IAsyncResult ar)
{
    // method body
}

您的 BeginInvoke 方法如下所示:

sendRegistrationDelegate.BeginInvoke(registrationToUser, label, new AsyncCallback(AsyncCallbackMethod), null);

【讨论】:

    猜你喜欢
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多