C# Windows Phone 8-将参数传递给回调函数
我对C#和Windows Phone 8的开发相当陌生,遇到了一个我无法克服的问题 我创建了一个类,该类执行一些HTTP请求,并在最后调用回调函数 我需要向回调函数传递一个参数,但我不知道如何传递 看起来我需要IAsyncResult,但我无法创建它的实例 我正在使用以下命令调用回调函数:C# Windows Phone 8-将参数传递给回调函数,c#,windows-phone-8,C#,Windows Phone 8,我对C#和Windows Phone 8的开发相当陌生,遇到了一个我无法克服的问题 我创建了一个类,该类执行一些HTTP请求,并在最后调用回调函数 我需要向回调函数传递一个参数,但我不知道如何传递 看起来我需要IAsyncResult,但我无法创建它的实例 我正在使用以下命令调用回调函数: CallBack.Invoke(null); 这很有效,但我无法通过辩论 PS:回调是一个异步回调() 编辑-更多代码: 来电者: private void abcRenew_Click(object se
CallBack.Invoke(null);
这很有效,但我无法通过辩论
PS:回调
是一个异步回调()
编辑-更多代码:
来电者:
private void abcRenew_Click(object sender, EventArgs e)
{
api = new abcAPI();
api.CallBack = new AsyncCallback(abcRenew_Click_callback);
api.getNewAbc();
}
public void abcRenew_Click_callback(IAsyncResult asynchronousResult)
{
/* should get some values from api
}
API:
简短回答:改用
BeginInvoke
/EndInvoke
有一个完整的例子,完全一样的东西,你需要在。注意返回值是如何通过EndInvoke
传递到回调的。编译器将自动生成AsyncResult
代码
编辑
看到更多的代码后,我突然意识到您完全错了。将
abcApi.Callback
的类型更改为Action
并调用它应该非常容易。相应地调整回调函数的参数类型,就可以了。您可以使用如下匿名方法:
private void abcRenew_Click(object sender, EventArgs e)
{
var api = new abcAPI();
Action<IAsyncResult> callback = asynchronousResult =>
{
/* Now `api` is in scope */
};
api.CallBack = new AsyncCallback(callback);
api.getNewAbc();
}
private void abcRenew\u单击(对象发送者,事件参数e)
{
var api=新的abcAPI();
操作回调=异步结果=>
{
/*现在“api”已进入范围*/
};
api.CallBack=新的异步回调(回调);
api.getNewAbc();
}
IAsyncResult是一个接口,因此您需要为实现它的某个对象创建一个实例,但这看起来不像是您应该手动调用的对象。然后调用Invoke
可以吗,或者有更好的方法吗?您需要传递一个只有回调调用方知道的参数值,还是在回调创建时就已经知道的参数值?只有回调调用方知道这个值。谢谢-但我不确定是否可以使用它。-我尝试调用回调函数并为其提供一些信息(如HttpWebRequest.BeginGetResponse(…)
-这样调用程序将得到回调函数的数据。-或者我错了吗?@mrabe请显示更多的代码。提供回调的一方和调用回调的一方。好的,我添加了更多的代码。-非常感谢您的帮助。-在这样一个(简单的)问题上陷入困境太令人沮丧了问题。-我真的很感谢你的帮助。再次感谢你的帮助:)
private void abcRenew_Click(object sender, EventArgs e)
{
var api = new abcAPI();
Action<IAsyncResult> callback = asynchronousResult =>
{
/* Now `api` is in scope */
};
api.CallBack = new AsyncCallback(callback);
api.getNewAbc();
}