Google 驱动器:Xamarin - Android GetInputStream - 每个内容实例只能调用一次

Google Drive: Xamarin - Android GetInputStream - can only be called once per Content Instance

我打开了 Google 驱动器,可以选择文件。单击确认按钮后,我将有一个响应并调用 InputStream 并开始读取文件。这是我的代码,它读取 InputStream.

var pendingResult = driveFile.OpenAsync(GoogleApiClient, DriveFile.ModeReadOnly, this)
            .ContinueWith((resultTask) =>
            {
                var driveContentResults = resultTask.Result;
                var driveContent = driveContentResults.DriveContents;

                if (_dialog != null && _dialog.IsShowing)
                    _dialog.Dismiss();

                if (driveContentResults.Status.IsSuccess)
                {
                    if (FileReadyCallback != null)
                    { 
                        var length = driveContent.InputStream.Length;
                        //var data = new byte[length];
                        //driveContent.InputStream.Read(data, 0, data.Length);
                        //FileReadyCallback(this, data);
                    }
                    //var absolutePath = FileUtilities.SaveStreamToDownloadDirectory(driveContent.InputStream, Guid.NewGuid() + ".pdf");
                    //SendResultToCallingActivity(absolutePath);
                }

            });

当应用程序到达 driveContent.InputStream.Length 时,断点向我显示 InputStream 每个内容实例只能调用一次。在代码中,那一行是我第一次调用输入流。

如错误所说,不是每次都调用driveContent.InputStream,而是创建一个名为input的变量并赋值driveContent.InputStream,然后使用input读取字节,得到长度或其他方法。

var input = driveContent.InputStream

然后替换为

var length = input.Length;

input.Read(data, 0, data.Length);