如何获得传递给异步方法在回调参数 [英] How to get the parameters passed to the asynchronous method in the callback
本文介绍了如何获得传递给异步方法在回调参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要被传输到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屋!
查看全文