在WP7中无法使用webClient.DownloadStringCompleted?

时间:2011-01-15 23:34:13

标签: c# silverlight windows-phone-7 webclient

我有一个简单的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using System.IO;

public partial class WebClient : PhoneApplicationPage
{
    public WebClient()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        WebClient webclient = new WebClient();

现在当我说webClient.时,我希望在IntelliSense下拉列表中看到DownloadStringCompleted,但我没看到。当我强制使用它时,当然它不会编译。有什么问题?

我正在测试WebClient以查看它是否在我的项目中使用,因为我厌倦了异步调用和与HttpWebRequest相关联的多个线程

3 个答案:

答案 0 :(得分:5)

您出于某种奇怪的原因使用名称“WebClient”作为PhoneApplicationPage的类名。因此,当您使用此行时: -

 WebClient webclient = new WebClient();

它会尝试创建您网页的另一个实例,当然没有DownloadStringCompletedWebClient命名空间中System.Net提供的任何其他内容。

我强烈建议您为页面指定一个不同的名称。如果你真的想把你的页面称为“WebClient”那么“WebClientPage”怎么样?

答案 1 :(得分:1)

似乎在这里工作正常。

我打开了预计贴在这里。

WebClient, HttpWebRequest and the UI Thread on Windows Phone 7

将WebClient使用情况更改为此

    webClient.DownloadStringAsync(new Uri("http://www.bing.com"));
    webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringCompleted);

并将新的事件处理程序编写为

void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) {
    System.Diagnostics.Debug.WriteLine("e.Error: " + e.Error);
    webClientTextBlock.Text = e.Result;
}

和以前一样工作,除了我通过e.Result而不是流来拉一个字符串。

答案 2 :(得分:1)

您需要查看参考装配体。添加与WP7相关的程序集,以查看intellisense是否正常工作。