我有一个几乎每分钟运行一次的控制台应用程序。它产生一些数据。
到此为止还好。
我的问题是:如果我想对“上一次执行中由同一控制台应用程序生成的数据”执行逻辑;我怎样才能检索这些以前的数据?
请注意,我想避免每分钟往返于 Db,我正在考虑是否有办法保留控制台应用程序。内存中的数据不知何故。
我有一个几乎每分钟运行一次的控制台应用程序。它产生一些数据。
到此为止还好。
我的问题是:如果我想对“上一次执行中由同一控制台应用程序生成的数据”执行逻辑;我怎样才能检索这些以前的数据?
请注意,我想避免每分钟往返于 Db,我正在考虑是否有办法保留控制台应用程序。内存中的数据不知何故。
您将无法将数据保存在内存中,因为当程序完成执行时它会丢失。
有两种选择:
如果可能的话,在您的机器上将 DataTable 保存为 XML,然后在您需要时在 DataTable 中读回此 XML。这对你有用
DataTable.WriteXml - 使用指定文件将 DataTable 的当前内容写入 XML。
DataTable.ReadXml - 将 XML 架构和数据从指定文件读入 DataTable。
您可以将数据存储在 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)