C# 如何在回调中获取传递给异步方法的参数
我需要一个在CallbackMethodSendRegistration中传输到AsyncSendRegistrationMethod的标签C# 如何在回调中获取传递给异步方法的参数,c#,callback,c#-2.0,asynccallback,C#,Callback,C# 2.0,Asynccallback,我需要一个在CallbackMethodSendRegistration中传输到AsyncSendRegistrationMethod的标签 private delegate ResponceFromServer AsyncSendRegistrationDelegate(RegistrationToUser registrationToUser, Label label); private ResponceFromServer AsyncSendRegistrationMethod(Regis
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
{
}
}
获取传递给sendRegistrationDelegate的标签引用的一种方法是让回调函数为lambda。在呼叫站点,这将如下所示:
var registrationToUser = ...;
var label = ...;
sendRegistrationDelegate.BeginInvoke(registrationToUser, label, ar =>
{
var responceFromServer = sendRegistrationDelegate.EndInvoke(ar);
if (responceFromServer.IsError)
{
label.Text = "";
}
else
{
}
}, null);
获取传递给sendRegistrationDelegate的标签引用的一种方法是让回调函数为lambda。在呼叫站点,这将如下所示:
var registrationToUser = ...;
var label = ...;
sendRegistrationDelegate.BeginInvoke(registrationToUser, label, ar =>
{
var responceFromServer = sendRegistrationDelegate.EndInvoke(ar);
if (responceFromServer.IsError)
{
label.Text = "";
}
else
{
}
}, null);