我寫一個文件IsolatedStorageFile與異步調用對WriteAsync的異步調用,我如何知道它什麼時候完成?
async void Base64ToImage()
{
byte[] data;
using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream isfs = isf.OpenFile("image.p64", FileMode.Open, FileAccess.ReadWrite))
{
data = new byte[isfs.Length];
isfs.Read(data, 0, data.Length);
isfs.Close();
}
using (IsolatedStorageFileStream stream = isf.OpenFile("newReConvertedFile.png", FileMode.Create))
{
await stream.WriteAsync(data, 0, data.Length);
///////////////////The problem is here, how would i know when WriteAsync is complete to then fire the reload method?
//reLoadFile();
}
}
}
我需要知道什麼時候WriteAsync完成重新加載另一種方法,文件,如何將我去這樣做?
編輯:
其實我的第一個想法是將文件保存到isostorage然後孫中山圖像URI該文件,但不能設置URI來isostorage爲圖像或至少我不能去顯示
我最初的想法是等待方法調用重新加載文件,但我得到一個錯誤「???不返回任務,不能等待。考慮改變它返回「,但我不知道如何去做這件事。
這裏的想法是將幾個圖像轉換爲Base64(SQLite數據庫),但只加載所選的,以顯示。
的reLoadFile方法如下
async void reLoadFile()
{
byte[] newFile;
using (IsolatedStorageFile newFileLoc = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream newFileStream = newFileLoc.OpenFile("newReConvertedFile.png", FileMode.Open, FileAccess.ReadWrite))
{
newFile = new byte[newFileStream.Length];
newFileStream.Read(newFile, 0, newFile.Length);
newFileStream.Close();
var ms = new MemoryStream(newFile);
var image = new BitmapImage();
image.SetSource(ms);
theImage.Source = image;
}
}
}
我一直在尋找的職位,但我不能罰款的方式來得到它的工作,因爲如果我把它馬上我得到一個異常。 我需要做的是打開文件將其從base64轉換爲.png,然後在保存後加載.png文件。 如果有人能幫助我,我將不勝感激。
感謝鮑勃。
我不明白爲什麼這個問題是下投了反對票。它提供了回答這個問題所需的所有細節。 – vcsjones
你不應該使用異步無效,改變你的方法,以異步任務 –
@vcsjones我也不明白它... –