0
我正在開發一款WinRT應用程序,該應用程序是本地網絡可玩遊戲。我可以在應用程序中讀取用戶的DisplayName和AccountPicture,並通過xaml在本地顯示給用戶。我使用下面的代碼來獲取帳戶圖片成的BitmapImage的XAML頁面中綁定:在本地網絡遊戲中與WinRT中的其他人共享本地用戶的個人資料圖片
private async Task<BitmapImage> GetDisplayImage()
{
BitmapImage image = null;
if (CoreApplication.MainView != null)
{
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(
CoreDispatcherPriority.Normal, async() =>
{
var stream = await Windows.System.UserProfile.UserInformation.GetAccountPicture(Windows.System.UserProfile.AccountPictureKind.LargeImage).OpenReadAsync();
image = new BitmapImage();
image.SetSource(stream);
});
}
return image;
}
我認爲這將有可能讀取流成字節數組,出貨時,應用程序連接到其他人,然後重構在另一端的字節數組像這樣:
public static async Task<byte[]> ToArray(this IRandomAccessStream stream)
{
IBuffer buffer = new Windows.Storage.Streams.Buffer((uint)stream.Size);
await stream.ReadAsync(buffer, buffer.Capacity, InputStreamOptions.ReadAhead);
await stream.FlushAsync();
return buffer.ToArray();
}
然而,就行:
await stream.FlushAsync();
我接收UnauthorizedAccessExce ption:
Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
必須能夠與他人分享的個人檔案相片,因爲我看到了它在其他地方完成的,但我似乎無法找到如何做到這一點的任何信息。如果任何人都可以在這個方向上指出我的正確方向(我想知道是否有一個不同的api需要插入,或者如果我需要在應用程序清單中設置某些東西..),我會非常感激。
感謝您的答覆,與你發佈的代碼,應用程序只是掛就行了:VAR緩衝=等待FileIO.ReadBufferAsync(文件); AccountPicture文件有什麼特別之處嗎? –
我說得太快了,我有一個不同的線程正在運行一些測試,導致了死鎖,你的代碼運行得很完美。謝謝! –