Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows Phone 8.1:应用程序设置/存储中的保存列表_C#_Windows Phone 8.1 - Fatal编程技术网

C# Windows Phone 8.1:应用程序设置/存储中的保存列表

C# Windows Phone 8.1:应用程序设置/存储中的保存列表,c#,windows-phone-8.1,C#,Windows Phone 8.1,我刚开始开发一个WindowsPhone8.1应用程序 该应用程序允许用户将“数据”(字符串)添加到收藏夹列表中。 现在的问题是: 保存列表或列表中的单个条目的最佳方式是什么,以便我能够在下一个应用程序启动时再次加载这些收藏夹 我想我应该把数据保存到一个(文本)文件中,这样我就可以逐行读取数据,然后再把列表放在一起 你觉得这是处理这种事情的最好方法吗?我是Windows Phone 8.1平台的新手,非常感谢您的帮助-谢谢 最佳方法取决于数据的大小和您的需要。至于在设置中保存,您可以尝试在保存时

我刚开始开发一个WindowsPhone8.1应用程序

该应用程序允许用户将“数据”(字符串)添加到收藏夹列表中。 现在的问题是:

保存列表或列表中的单个条目的最佳方式是什么,以便我能够在下一个应用程序启动时再次加载这些收藏夹

我想我应该把数据保存到一个(文本)文件中,这样我就可以逐行读取数据,然后再把列表放在一起


你觉得这是处理这种事情的最好方法吗?我是Windows Phone 8.1平台的新手,非常感谢您的帮助-谢谢

最佳方法取决于数据的大小和您的需要。至于在设置中保存,您可以尝试在保存时生成字符串数组,在加载数据时生成列表。简单示例如下所示:

列表收藏夹=新列表();
受保护的无效方法()
{
//另存为数组
ApplicationData.Current.LocalSettings.Values[“myList”]=Favorites.ToArray();
//检索数组并从中列出一个列表
收藏夹=((字符串[])ApplicationData.Current.LocalSettings.Values[“myList”]).ToList();
}

请记住,LocalSettings只支持简单的类型,并且有其他限制-有关更多信息。

我想我终于让它起作用了。我们应该早点考虑类似的事情

因此,我获得了异步任务SaveAppSettingsAsync(),并在应用程序关闭时在挂起事件和我的硬件按钮事件中调用它:

private async void OnSuspending(object sender, SuspendingEventArgs e)
    {
        var deferral = e.SuspendingOperation.GetDeferral();


        await SaveAppSettingsAsync();


        deferral.Complete();
    }

private async void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
    {
        Frame rootFrame = Window.Current.Content as Frame;
        if (rootFrame != null)
        {
            e.Handled = true;
            if (rootFrame.CurrentSourcePageType == typeof(MainPage))
            {
                await SaveAppSettingsAsync();

                this.Exit();
            }
            else if (rootFrame.CanGoBack)
                rootFrame.GoBack();
        }
    }

谢谢你的帮助。我想我现在更了解如何处理异步任务了。正如我所说,我是Windows Phone的新手,以前从未真正使用过它们。

我需要保存的字符串大约为70个字符,有的更少,有的更多。随着时间的推移,添加越来越多的收藏夹应该没有限制。我真的没有找到答案:如果我将列表/数组保存在本地设置中,列表/数组会有多大?@Reality80它肯定可以处理70个字符长的字符串,但我不确定将其用于“无限”数量的收藏夹是否是一个好主意。我没有使用大量数据测试设置,在这种情况下,我认为storagefile会更好(更安全)。我也不知道大小限制,在文档中,你可以找到漫游设置的限制,但它们并不代表本地设置。@Romsaz谢谢你。我已经在我的应用程序中测试了这个方法,它是有效的。但我也认为,对于没有很多限制的收藏夹列表来说,这不是一种“正确”的方式。在我的申请中,限制是没有多大意义的。我已经实现了在本地应用程序文件夹中编写和读取文本文件收藏夹的代码。但我有一个问题:当挂起应用程序时,如何创建/写入文件?所有方法都是异步的,应用程序在写入文本文件之前关闭。我怎样才能完成这项任务才能让它工作?@Reality80你有App.Suspending事件-你可以把代码放在那里,你也可以使它异步-在这种情况下,请记住-你可能也会找到一些信息。我仍然不知道我是否做对了。如果我调试我的应用程序,则异步保存方法(在deleral.Complete()之前)在我在调试器工具栏中选择挂起生命周期时会起作用。但我如何在智能手机上“实时”测试它呢?即使我部署了发布,挂起事件也不会触发?