2

我正在尝试找到一种方法来取回我以前的变量值,以便我可以在我手动重新启动它时崩溃之前将我的应用程序恢复到以前的运行状态。我目前正在使用保存在项目文件夹中的“配置”文件。有一个更好的方法吗?

我想要保存的代码的一些小部分。

if (EventID == WIA.EventID.wiaEventItemCreated)
        {
            if (d != null)
            {
                foreach (Property p in d.Properties)
                {
                    if (p.Name.Equals("Pictures Taken"))
                        Console.WriteLine("Taken");
                }

                wiaImageFile = (WIA.ImageFile)(d.Items[d.Items.Count].Transfer(FormatID.wiaFormatJPEG));
                wiaImageFile.SaveFile(Properties.Settings.Default.FolderNameRaw + "\\" + imageCount + ".jpg");
                imageCount++;//I want to save this count so that I can continue the sequence even after the application crashes
                Pluck.Default.PhotoExistsInDirectory = true;
                FacebookControls fbc = new FacebookControls();
                if(Properties.Settings.Default.UseFB == true)
                    fbc.UploadPhotos();


            }
        }
4

3 回答 3

1

一般来说,配置文件是一个很好的答案。您的其他选项通常是注册表或数据库,但我认为配置文件是更安全的选择。

持久化这些信息的问题是它可能会再次导致错误,如果是这样,您将希望能够轻松地丢弃它。一个文件(当然存储在用户设置空间中)也许是这样做的方法。如果需要,您可以指示用户删除该文件。用户访问注册表或数据库是一个更复杂的修复。

此外,您应该将状态包装在适当的对象中,并构建初始化逻辑以初始化状态对象并具有不加载配置文件的机制。

于 2012-12-18T15:20:20.900 回答
0

我使用配置文件。我还有一个全局异常处理程序,它可以捕获任何异常并提供在应用程序关闭之前保存任何文件(包括用户正在处理的文件)的机会。

我也同意 C Ross 的观点,即您可以保留导致应用程序失败的数据。另一个不会让您立即恢复的选项是使用计时器或后台进程定期保留设置。我将它与几个备份一起使用,有点像 Windows 中的系统还原功能。

于 2012-12-18T15:24:40.557 回答
0

您可以处理 UnhandledException、Application_ThreadException 和 Application.ApplicationExit 事件,并尝试在那里保存您的数据:

http://www.switchonthecode.com/tutorials/csharp-tutorial-dealing-with-unhandled-exceptions

作为@C。罗斯说,用户配置文件是一个不错的选择。

当然,首先您必须在运行时将应用程序的状态保存在某个对象中。

于 2012-12-18T15:28:26.830 回答