1

我有一个几乎每分钟运行一次的控制台应用程序。它产生一些数据。

到此为止还好。

我的问题是:如果我想对“上一次执行中由同一控制台应用程序生成的数据”执行逻辑;我怎样才能检索这些以前的数据?

请注意,我想避免每分钟往返于 Db,我正在考虑是否有办法保留控制台应用程序。内存中的数据不知何故。

4

3 回答 3

1

您将无法将数据保存在内存中,因为当程序完成执行时它会丢失。

有两种选择:

  1. 将数据写入本地文件,然后在程序下次运行时将其读回。
  2. 修改程序,使其连续运行并循环。在这种情况下,您能够将数据保留在内存中,因为程序尚未终止。
于 2012-11-09T11:15:54.623 回答
1

如果可能的话,在您的机器上将 DataTable 保存为 XML,然后在您需要时在 DataTable 中读回此 XML。这对你有用

DataTable.WriteXml - 使用指定文件将 DataTable 的当前内容写入 XML。

DataTable.ReadXml - 将 XML 架构和数据从指定文件读入 DataTable。

于 2012-11-09T11:10:49.050 回答
0

您可以将数据存储在 HD 上。首选方法是使用 BinaryFormatter。例子:

    public static Byte[] SerializeObject(Object obj)
    {
        BinaryFormatter formatter = new BinaryFormatter();
        formatter.TypeFormat = FormatterTypeStyle.TypesWhenNeeded;
        formatter.AssemblyFormat = FormatterAssemblyStyle.Simple;

        using(MemoryStream stream = new MemoryStream())
        {
            formatter.Serialize(stream, obj);
            return stream.ToArray();
        }
    }
    public static Object DeserializeObject(Byte[] bytes)
    {
        BinaryFormatter formatter = new BinaryFormatter();
        formatter.TypeFormat = FormatterTypeStyle.TypesWhenNeeded;
        formatter.AssemblyFormat = FormatterAssemblyStyle.Simple;

        using(MemoryStream stream = new MemoryStream(bytes))
            return formatter.Deserialize(stream);
    }

我没有对其进行测试,但您可以尝试将其加载/保存到MemoryMappedFile (.NET 4.0)

于 2012-11-09T12:47:07.740 回答