locked
Работа с HTTPClient в Windows 8 style app RRS feed

  • Вопрос

  • Простенькое приложение:

    public sealed partial class MainPage : Page
        {
            private HttpClient http = null;
            private Uri uri = null;
    
            public MainPage()
            {
                this.InitializeComponent();
            }
    
            async Task<int> AccessTheWebAsync()
            {
                HttpClient client = new HttpClient();
                Task<string> getStringTask = client.GetStringAsync("http://msdn.microsoft.com");
                string urlContents = await getStringTask;
                return urlContents.Length;
            }
    
            protected override void OnNavigatedTo(NavigationEventArgs e)
            {
            }
    
            private void Button_Click_1(object sender, RoutedEventArgs e)
            {
                Task<int> getLengthTask = AccessTheWebAsync();
                int contentLength = await getLengthTask;
            }
        }

    Проблема со строчкой

    int contentLength = await getLengthTask;

    Ошибка:

    Оператор await можно использовать только в методах с модификатором async. Попробуйте пометить этот метод модификатором async и изменить тип его возвращаемого значения на Task.

    Не могу понять, никаких ошибок быть не должно же. Помогите дельным советом.

    27 сентября 2012 г. 18:38

Ответы

  • Привет

    Вам нужно отметить метод Button_Click_1 как асинхронный. Добавьте в его опрделение ключевое слово async перед void.

     private async void Button_Click_1(object sender, RoutedEventArgs e)
            {
                Task<int> getLengthTask = AccessTheWebAsync();
                int contentLength = await getLengthTask;
            }


    Для связи [mail]

    • Помечено в качестве ответа welikoiwanenko 2 октября 2012 г. 14:25
    1 октября 2012 г. 8:52