我创建了一个应用程序,需要将用户数据存储在应用程序启动时创建的文件中,当我编译它时,它向我显示此System.IO.FileLoadException:无法找到或加载特定文件。 (HRESULT 异常:0x80131621) 以及这个 System.NullReferenceException:无效指针。
当应用程序启动时,它会在执行所有操作之前调用
Init()
方法。
public static class FilesManager
{
public static StorageFolder ROOT_DIRECTORY, USER_DIRECTORY;
public static StorageFile FILES_MANAGER_CACHE_FILE;
public static volatile string FILES_MANAGER_CACHE;
public static volatile StorageFolder FOLDER;
public static async Task Init()
{
try
{
FOLDER = await ApplicationData.Current.LocalFolder.CreateFolderAsync("DashData", CreationCollisionOption.OpenIfExists);
FOLDER = await ApplicationData.Current.LocalFolder.GetFolderAsync("DashData");
if (FOLDER == null) Debug.WriteLine("FOLDER IS NULL.");
FILES_MANAGER_CACHE_FILE = await FOLDER.CreateFileAsync("filesmanageruserdata.json", CreationCollisionOption.OpenIfExists);
FILES_MANAGER_CACHE_FILE = await FOLDER.GetFileAsync("filesmanageruserdata.json");
await LoadFilesManagerCacheAsync();
Debug.WriteLine("TEXT: " + FILES_MANAGER_CACHE);
}
catch(Exception e)
{
Debug.WriteLine("ERROR: " + e.ToString());
}
}
public static async Task LoadFilesManagerCacheAsync()
{
FILES_MANAGER_CACHE = await FileIO.ReadTextAsync(FILES_MANAGER_CACHE_FILE);
}
public static async Task storeUserData(string content)
{
try
{
await FileIO.WriteTextAsync(FILES_MANAGER_CACHE_FILE, content);
}catch(Exception e)
{
Debug.WriteLine("ERROR: " + e.ToString());
}
}
}
我尝试了不同的解决方案,但没有一个有效,虽然它与调用
await FilesManager.Init();
及其实现或其他任何东西无关,我只是切换到 WinUI 3 Unpackaged App,据我所知,它比 UWP 更好,好事没有'在执行异步操作和读/写数据时没有发现任何真正的问题。我只发现了一些与应用程序启动时间相关的小问题(我认为这将在 WinUI 的后续版本中得到修复),无论如何我建议切换到它(它包含与 UWP 相同的功能等等,而且它也运行在 dotnet core 上)因此该应用程序可以独立于 dotnet 运行时的安装)