0

我想从 webClient_OpenReadCompleted 获得结果,并且我想在 getMethod 中获得响应。但是在这段代码中,首先 getMehod 有效,然后只有当 getMethod 完成时,webClient_OpenReadCompleted 才有效。如何在 getMethod 中得到结果?

ps 这一切都在 Windows Phone 上

public string apiUri = "https://api.vk.com/method/";
public string response = "";

public void getMethod(string parameters)
{
    var webClient = new WebClient();
    webClient.OpenReadCompleted += webClient_OpenReadCompleted;
    string uri = apiUri + parameters + "&access_token=" + access_token;
    webClient.OpenReadAsync(new Uri(uri));
}

void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    XDocument xml = XDocument.Load(e.Result);
    response = xml.ToString();
}

public void statusGet(string uid)
{
    getMethod("status.get.xml?uid" + uid);
}
4

2 回答 2

0

如果你想返回数据,我建议你设置 1) 自定义 EventArgs 来保存数据 2) 自定义事件。

获取数据时,设置事件参数,然后设置事件,以便订阅者获取数据。

于 2012-07-27T08:02:06.973 回答
0

我没有尝试过,但我问了一位高级 c# 开发人员,他建议创建 bool 并写下这个:

bool work;

public void getMethod(string parameters)
{
    var webClient = new WebClient();
    webClient.OpenReadCompleted += webClient_OpenReadCompleted;
    string uri = apiUri + parameters + "&access_token=" + access_token;
    webClient.OpenReadAsync(new Uri(uri));
    work = true;
    while(work) { Thread.Sleep(100); }
}

void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    XDocument xml = XDocument.Load(e.Result);
    response = xml.ToString();
    work = false;
}

现在,问题不是实际的,因为我改变了我的应用程序的架构。

于 2012-07-27T16:50:06.050 回答