【问题标题】:How to manage a Webclient.Completed event in a foreach loop?如何在 foreach 循环中管理 Webclient.Completed 事件?
【发布时间】:2013-02-12 17:49:47
【问题描述】:

我正在使用 WPF 抓取一个网站,并尝试将请求发送到我的列表中的 URL foreach 字符串。

现在看起来 CompletedEvent 没有被触发。它只是回到我列表中下一个字符串的循环。 如何让它在到达 Completed 事件后返回循环?

private void getAdress(double latitude, double longitude)
{
   foreach (string classe in stringList)
   {
        WebClient searchClient= new WebClient();
        searchClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(searchClient_DownloadStringCompleted);
        searchClient.DownloadStringAsync(new Uri("http://www.theURL.com"));  
    }
}

亲切的问候, 尼尔斯

【问题讨论】:

    标签: c# wpf webclient


    【解决方案1】:

    您正在异步下载。异步的全部意义在于您告诉请求开始,以及当它完成时您希望发生的事情......然后您继续前进。

    如果您想等到第一个请求完成后再开始第二个请求,您应该使用同步调用 - 但不要在 UI 线程中这样做...

    【讨论】:

    • 我明白了,但是当我将其更改为“DownloadString(new Uri...”时,在 Completed 事件中仍然没有触发断点或消息框...我做错了什么?跨度>
    • @Niels:我不知道当您使用同步调用时是否触发了事件 - 在这种情况下您应该使用方法调用的结果。
    猜你喜欢
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多