UWP c# чтение потока из StorageFile возвращает ноль. Почему и как это исправить? - PullRequest
0 голосов
/ 08 марта 2020

Я пытаюсь открыть поток из StorageFile. Тем не менее, я пробовал несколько способов запрограммировать это и всегда, кажется, застрял.

В настоящее время я могу использовать средство выбора файлов, чтобы получить файл хранилища, сохранить его токен и использовать этот токен, чтобы снова попасть в файл хранилища. , Но когда я хочу использовать метод OpenStreamForReadAsyn c, результатом будет нулевой поток.

Сначала я попробовал метод asyn c, а затем задачу (см. Код), но я не могу понять, что неправильно. Кто-нибудь может мне помочь?

Странно то, что строка `dummy = 1; ' никогда не выполняется. Отладчик переходит в bool = точка останова;

public class Workbook
    {
        private StorageFile exFile = null;
        private Stream stream = null;
        public SpreadsheetDocument exDoc = null;
        long dummy = 0;

        public Workbook(String faToken)
        {
            GetStreamFromToken(faToken);
            //GetStream(exFile);
            //exDoc = SpreadsheetDocument.Open(stream, false);
            //var test = exDoc.WorkbookPart.Parts;
            bool breakpoint = true;
        }

        async private void GetStreamFromToken(String faToken)
        {
            exFile = await StorageApplicationPermissions.FutureAccessList.GetFileAsync(faToken);
            stream = await GetStream(exFile);
            dummy = 1;

        }

        public Task<Stream> GetStream(StorageFile exFile)
        {
            return exFile.OpenStreamForReadAsync();
        }

    }

1 Ответ

0 голосов
/ 09 марта 2020

Ну, я нашел свою ошибку. Я не понял, что ожидание не означает, что код ожидает завершения. Поэтому я должен использовать метод wait для ожидания завершения задачи.

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