如何获得传递给异步方法在回调参数 [英] How to get the parameters passed to the asynchronous method in the callback

查看:153
本文介绍了如何获得传递给异步方法在回调参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要被传输到AsyncSendRegistrationMethod在CallbackMethodSendRegistration的标签。

 私人委托ResponceFromServer AsyncSendRegistrationDelegate(RegistrationToUser registrationToUser,标签标签); 
私人ResponceFromServer AsyncSendRegistrationMethod(RegistrationToUser registrationToUser,标签标签)
{
的setText(标签,registrationToUser.Name +注册...);


返回Requests.DataBase.Authorization.Registration(
registrationToUser.Name,
registrationToUser.IdRoleUser,
registrationToUser.IdGroup);
}
私人无效CallbackMethodSendRegistration(IAsyncResult的AR)
{
VAR sendRegistrationDelegate =(AsyncSendRegistrationDelegate)ar.AsyncState;

VAR responceFromServer =(ResponceFromServer)sendRegistrationDelegate.EndInvoke(AR);
如果(responceFromServer.IsError)
{
//这里需要label.Text
}
,否则
{

}
}


解决方案

要得到一个参考的一种方式传递给sendRegistrationDelegate标签是由具有回调是一个lambda。在调用点,这将是这样的:

  VAR registrationToUser = ...; 
变种标签= ...;

sendRegistrationDelegate.BeginInvoke(registrationToUser,标签,AR =>
{
VAR responceFromServer = sendRegistrationDelegate.EndInvoke(AR);
如果(responceFromServer.IsError)
{
label.Text =;
}
,否则
{

}
},NULL);


I need a Label that is transmitted to the AsyncSendRegistrationMethod in CallbackMethodSendRegistration.

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
    {

    }
}

解决方案

One way to get a reference to the label passed to sendRegistrationDelegate is by having the callback be a lambda. At the call site this would look like this:

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

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

        }
    }, null);

这篇关于如何获得传递给异步方法在回调参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆