3 c# parameters events windows-phone-7 windows-phone-7.1
我有以下方法调用webservice.DownloadStringCompletedEventHandler'回调'显然是在此函数完成后函数控件将流向的:
private void myWebService(string yourParameter, DownloadStringCompletedEventHandler callback)
{
//Url to search servlet
string servletUrl = string.Format("https://something.com/etc/what?bla={0}",
Uri.EscapeDataString(yourParameter));
//Calls Servlet
WebClient client = new WebClient();
client.DownloadStringCompleted += callback;
client.DownloadStringAsync(new Uri(servletUrl, UriKind.Absolute));
}
Run Code Online (Sandbox Code Playgroud)
我这样调用上面的函数:
myWebService("Hello there!", myWebServiceReturn);
Run Code Online (Sandbox Code Playgroud)
WebServiceReturn(控件将在webservice调用后结束)然后如下所示:
private void myWebServiceReturn(object sender, DownloadStringCompletedEventArgs e)
{
//And here we end up...
//how do I get the value of 'yourParameter' that I sent to 'myWebService()'??
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是..我发送给'myWebService()'的参数,在本例中是'yourParameter',如何在'myWebServiceReturn'方法中获得相同的值?如果我能以某种方式将它附加到'DownloadStringCompletedEventArgs e'并以那种方式检索它将非常方便.
非常感谢任何人的帮助!! :(
使用DownloadStringAsync的这个重载.它需要一个额外的object类型参数,它可以通过DownloadStringCompletedEventArgs的UserState属性在已完成的处理程序中使用.这允许您传入您想要的任何状态信息.
例如,致电服务:
client.DownloadStringAsync(new Uri(servletUrl, UriKind.Absolute), yourParameter);
Run Code Online (Sandbox Code Playgroud)
访问结果:
string yourParameter = e.UserState as string;
Run Code Online (Sandbox Code Playgroud)