DownloadStringCompletedEventHandler参数

时间:2012-11-14 12:31:05

标签: c# windows-phone-7 events parameters 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));
}

我这样调用上面的函数:

myWebService("Hello there!", myWebServiceReturn);

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()'??
}

所以我的问题是..我发送给'myWebService()'的参数,在本例中是'yourParameter',如何在'myWebServiceReturn'方法中获得相同的值?如果我能以某种方式将它附加到'DownloadStringCompletedEventArgs e'并以那种方式检索它将非常方便。

非常感谢任何人的帮助!! :(

2 个答案:

答案 0 :(得分:6)

使用此DownloadStringAsync的重载。它需要一个额外的object类型参数,它可以通过DownloadStringCompletedEventArgs的UserState属性在已完成的处理程序中使用。 这允许您传入您想要的任何状态信息。

e.g。致电服务:

client.DownloadStringAsync(new Uri(servletUrl, UriKind.Absolute), yourParameter);

访问结果:

string yourParameter = e.UserState as string;

答案 1 :(得分:1)

在回调方法中,您引用了sender对象。在myWebservice中,在客户端对象中添加标题 -

client.Headers["yourParameter"]= yourParameter;

在你的回调中,您可以像这样检索标题

var client= sender as WebClient;
string parameter= client.Headers["yourParameter"];

编辑:这显然不是识别异步请求的正确方法。 sga101的方法更合适。