Информация о прогрессе с использованием HttpClient

Я хотел реализовать индикатор выполнения с помощью «Windows.Web.Http.HttpClient» в Windows Phone 8.1 Silverlight.

Изменить: первая попытка:

private async Task CheckProgress()
{
    var df = httpClient.GetAsync(new Uri(uriString, UriKind.Absolute)).Progress = Progress;

    // here i want to stop the execution till whole content downloaded

    // Reason to wait here
    // this client download will be used by one more async method. so i need to wait here till the file completely downloaded.

    // this whole is done in this method only ( requirement)
} 

private void  Progress(IAsyncOperationWithProgress<HttpResponseMessage, HttpProgress> asyncInfo, HttpProgress progressInfo)
{
   // here i getting the progress value.
   // i have already set a call back method that report the progress on the UI.
}

Еще одна попытка: но получение исключения Invocation of delegate at wrong time.

private async Task CheckProgress()
{
    var df = httpClient.GetAsync(new Uri(uriString, UriKind.Absolute))

    df.Progress =  Progress;

    await df;
    // here i want to stop the execution till whole content downloaded
} 

Вопрос:

Все, что я хотел, это остановить метод CheckProgress(), чтобы дождаться завершения всей загрузки.


person loop    schedule 18.07.2014    source источник
comment
Возможно, вы можете взглянуть на ManualResetEvent (msdn.microsoft.com/en-us/library/)   -  person Sauleil    schedule 18.07.2014
comment
Когда и как вы вызываете CheckProgress()?   -  person Igor Ralic    schedule 18.07.2014
comment
ха-ха, я тоже... я запутался. У вас есть полный код?   -  person gumuruh    schedule 25.03.2020


Ответы (1)


Я получил решение своей проблемы, но это всего лишь небольшая ошибка в моем Second Attempt.

private async Task CheckProgress()
{
    var df = httpClient.GetAsync(new Uri(uriString, UriKind.Absolute))

    df.Progress = (res, progress) =>
    { 
       // no separate event handler.
    }

    await df;   
} 

Он просто работает нормально. Надеюсь, это поможет кому-то ура :)

person loop    schedule 19.07.2014
comment
как насчет байтов, хранящихся при использовании в http://zetcode.com/csharp/httpclient/? Я имею в виду, что ваш код выглядит немного иначе. один раз вызывая httpClient.GetAsync(); метод - person gumuruh; 25.03.2020