UpoadOperationProgress возвращает bytessent = bytestosend мгновенно - PullRequest
0 голосов
/ 09 сентября 2018

После того, как я успешно завершил загрузку, я пытаюсь получить некоторый пользовательский интерфейс. прямо сейчас вот мой код, включая обратный вызов хода выполнения и обработчик этого обратного вызова.

public async Task<UploadOperation> BackgroundUploadVideoAsync(IStorageFile file, string gfyName)
{
    BackgroundUploader uploader = new BackgroundUploader();

    //… Create upload ...


    var partOperation = await uploader.CreateUploadAsync(new Uri("https://filedrop.gfycat.com/"), contentParts, "form-data", Guid.NewGuid().ToString() );
    var progress = new Progress<UploadOperation>(Shell.Current.HandleUpload);
    try
    {
        await partOperation.StartAsync().AsTask(progress);
        return partOperation;
        //var response = await operation.StartAsync().AsTask();
    }
    catch(Exception e)
    {

        var status = BackgroundTransferError.GetStatus(e.HResult);
        //await new MessageDialog($"An error occurred: {status}").ShowAsync();

    }
    return partOperation;
}

public async void HandleUpload(UploadOperation operation)
{
    await Dispatcher.RunAsync( Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
    {
        var percent = operation.Progress.BytesSent / operation.Progress.TotalBytesToSend;
        progressBar.Value = Math.Truncate((double)percent);
        });
    }
}

Проблема в том, что когда вызывается HandleUpload, 'bytessent' и 'bytestosend' немедленно равны, и мой индикатор выполнения установлен на 100% и ждет там, пока задача не будет завершена. Я никогда не имел дело с обратными вызовами прогресса, поэтому я могу делать это совершенно неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...