我有这段代码
public static class Storage
{
public async static Task<bool> Exists(string filename)
{
var folder = await Package.Current.InstalledLocation.GetFolderAsync("Assets");
var _files= await folder.GetFilesAsync(CommonFileQuery.OrderByName).AsTask().ConfigureAwait(false);
var file = _files.FirstOrDefault(x => x.Name == filename);
return file != null;
}
}
并从我的Windows 8商店应用程序调用它;
this.IconExists = this.Game != null && Storage.Exists(this.IconName).Result;
因此,如果我在上面的行中设置一个断点并逐步运行它,它可以工作,但是没有中断并且只是运行应用程序会导致应用程序挂起。
类似的代码几天前正在提交;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Windows.ApplicationModel;
using Windows.Storage;
using Windows.Storage.Search;
namespace eggrr.Core.FileStorage
{
public class Storage
{
private IReadOnlyList<StorageFile> _files;
public Storage()
{
_files = GetFilesAsync("Assets").Result;
}
private async Task<IReadOnlyList<StorageFile>> GetFilesAsync(string relativeFolderPath)
{
var path = string.Format("{0}\\{1}", Package.Current.InstalledLocation.Path, relativeFolderPath);
var folder = await StorageFolder.GetFolderFromPathAsync(path);
return await folder.GetFilesAsync(CommonFileQuery.OrderByName).AsTask().ConfigureAwait(false);
}
public bool Exists(string filename)
{
var file = _files.FirstOrDefault(x => x.Name == filename);
return file != null;
}
private static readonly Storage _instance = new Storage();
public static Storage Instance { get { return _instance; } }
}
}
有什么想法吗?
答案 0 :(得分:3)
似乎这解决了它的问题;
public static class Storage
{
private static IReadOnlyList<StorageFile> _files;
static Storage()
{
_files = GetFilesAsync("Assets").Result;
}
private async static Task<IReadOnlyList<StorageFile>> GetFilesAsync(string relativeFolderPath)
{
var folder = await Package.Current.InstalledLocation.GetFolderAsync("Assets").AsTask().ConfigureAwait(false);
return await folder.GetFilesAsync(CommonFileQuery.OrderByName).AsTask().ConfigureAwait(false);
}
public static bool Exists(string filename)
{
var file = _files.FirstOrDefault(x => x.Name == filename);
return file != null;
}
}
更多信息;