Не можете использовать webClient.DownloadStringCompleted в WP7? - PullRequest
1 голос
/ 16 января 2011

У меня есть простой код:

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., я ожидал увидеть DownloadStringCompleted в раскрывающемся списке IntelliSense, но я не вижу. И когда я заставляю его использовать, конечно, он не компилируется. В чем проблема?

Я тестирую WebClient на предмет его использования в моем проекте, так как мне надоели асинхронные вызовы и несколько потоков, связанных с HttpWebRequest

Ответы [ 3 ]

5 голосов
/ 16 января 2011

Вы по какой-то странной причине использовали имя "WebClient" в качестве имени класса для вашего PhoneApplicationPage. Следовательно, когда вы используете эту строку: -

 WebClient webclient = new WebClient();

Он пытается создать другой экземпляр вашей страницы, который, конечно, не имеет DownloadStringCompleted или чего-либо еще, предоставленного WebClient в пространстве имен System.Net.

Я бы настоятельно рекомендовал вам дать вашей странице другое имя. Если вы действительно хотите назвать свою страницу "WebClient", тогда как насчет "WebClientPage"?

1 голос
/ 16 января 2011

Вам нужно увидеть ссылки на сборки. Добавьте сборки, связанные с WP7, чтобы убедиться, что intellisense работает правильно.

1 голос
/ 16 января 2011

Кажется, здесь все в порядке.

Я открыл прогноз, размещенный здесь.

WebClient, HttpWebRequest и поток пользовательского интерфейса на 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 вместо потока.

...