簡體   English   中英

uwp無法保存文件

[英]uwp unable to save file

我正在嘗試使用這些方法將文件保存到應用程序存儲中(當應用程序運行時):

首先,我從URI創建文件:

StorageFile file = await StorageFile.CreateStreamedFileFromUriAsync(name, uri, RandomAccessStreamReference.CreateFromUri(uri));

然后我將文件復制到應用程序的存儲空間以便以后使用它:

StorageFile file2 = await file.CopyAsync(ApplicationData.Current.LocalFolder, name, NameCollisionOption.ReplaceExisting);

但是第二個方法CopyAsync()沒有完成,然后在等待~5min后隨機失敗並出現此錯誤:

錯誤截圖

此外,每次調用CopyAsync()方法時,都會在應用程序的生命周期中添加進程:

生命周期過程

當我單擊其中一個進程時, CopyAsync()方法結束。

要解決此問題,我必須重新啟動手機並卸載/安裝應用程序。

注意:當我在后台任務中嘗試此操作時,這會在100%的時間內失敗。

由於這篇文章,我能夠解決這個問題

代碼也適用於后台任務:)

這並不能解釋為什么FileStorage.CopyAsync()方法失敗,但這是一種解決方法,直到有人獲得更多信息。

(似乎當CopyAsync()在后台任務中失敗時,它將在后台任務或前台應用程序中阻止對此方法的任何未來調用)

代碼段:

 private async Task<StorageFile> DownloadImagefromServer(string URI, string filename) {
        filename += ".png";
        var rootFolder = await ApplicationData.Current.LocalFolder.CreateFolderAsync("Citations365\\CoverPics", CreationCollisionOption.OpenIfExists);
        var coverpic = await rootFolder.CreateFileAsync(filename, CreationCollisionOption.FailIfExists);

        try {
            HttpClient client = new HttpClient();
            byte[] buffer = await client.GetByteArrayAsync(URI); // Download file
            using (Stream stream = await coverpic.OpenStreamForWriteAsync())
                stream.Write(buffer, 0, buffer.Length); // Save

            return coverpic;
        } catch {
            return null;
        }
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM