在程序崩溃后获取变量

时间:2012-12-18 15:13:45

标签: c# asp.net

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

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

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();


            }
        }

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

我也同意C Ross你可能会坚持导致应用程序失败的数据。另一个不能让你马上回来的选择是使用计时器或后台进程定期保持设置。我在几个备份中使用它,有点像Windows中的系统还原功能。

答案 2 :(得分:0)

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

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

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

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